es6数组新增的方法

…扩展运算符

let arr1 = [1, 1, 1, 1];
let arr2 = [2, 2, 2, 2, 2];
let arr = [...arr1, ...arr2];
console.log(arr) //[1, 1, 1, 1, 2, 2, 2, 2, 2]
let [x, y, ...test, z] = [1, 2, 3, 4, 5, 6, 7, 8, 9]
console.log(x, y, test, z) //报错 Rest element must be last element

Array.from()

功能: 把类数组( 只要有length) 转换为真正的数组

参数有两个, 第一个类数组, 第二个回调函数, 回调函数的参数为每一项

let lis = document.querySelectorAll('li');
console.log(lis) //是类数组 NodeList(9) [li, li, li, li, li, li, li, li, li]0: li1: li2: li3: li4: li5: li6: li7: li8: li length: 9__proto__: NodeList
console.log(Array.from(lis)) //数组  [li, li, li, li, li, li, li, li, li]
let lis = Array.from(document.querySelectorAll('li'), function(item) {
    return item.innerHTML
})
console.log(lis) //["1", "2", "3", "4", "5", "6", "7", "8", "9"]
let arr = {
    0: 1,
    1: 2,
    2: 3
}
console.log(Array.from(arr)) //[]
let arr = {
    0: 1,
    1: 2,
    2: 3,
    length: 3
}
console.log(Array.from(arr)) //[ 1, 2, 3 ]
let arr = [1,2,3];
console.log(Array.from(arr,(a)=>a*a)//[1,4,6]

Array.isArray

判断是否是数组 是返回boolean

typeof array 判定是否是数组 返回的是类型

let arr = [1, 3, 5, 2];
console.log(Array.isArray(arr)) //true
let arr = {
    0: 1,
    1: 2,
    2: 3
}
console.log(Array.isArray(arr)) //false  是类数组,不是数组 
let arr = {
    0: 1,
    1: 2,
    2: 3,
    length: 3
}
console.log(Array.isArray(arr)) //false  是类数组,不是数组 

Array.of(一组数据)

功能: 把一组数据转成数组

let arr = Array.of(1, 2, 4, 6, 3);
console.log(arr) //[ 1, 2, 4, 6, 3 ]
let arr = Array.of('q', 'e', 1, 4, 6);
console.log(arr)
console.log(Array.of(10)) //[10]
console.log(Array(10)) //[empty × 10]

Array.prototype.copyWithin

  • 功能: 替换数组 修改原数组

  • 参数

    1. 开始替换的位置
    2. 从该位置开始读取数据
    3. 从该位置结束读取数据

    参数为一个的时候, 是指从数组中的开头截取( 参数的个数) 个, 一直循环, 返回新数组, 新数组和原数组的个数一样

    参数为两个, 截取数组个数, 写入新数组一遍, 不够补上的项是第二个参数为下标的, 后面的

let arr = [1, 2, 3, 5, 6, 7];
arr.copyWithin(0)
console.log(arr) //[ 1, 2, 3, 5, 6, 7 ]
let arr = [1, 2, 3, 5, 6, 7];
arr.copyWithin(4)
console.log(arr) //[ 1, 2, 3, 5, 1, 2 ]
let arr = [1, 2, 3, 5, 6, 7];
arr.copyWithin(4, 1)
console.log(arr) //[ 1, 2, 3, 5, 2, 3 ]
let arr = [1, 2, 3, 5, 6, 7];
arr.copyWithin(4, 3)
console.log(arr) //[ 1, 2, 3, 5, 5, 6 ]
let arr = [1, 2, 3, 5, 6, 7];
arr.copyWithin(2, 2, 3)
console.log(arr) //[ 1, 2, 3, 5, 6,7 ]

Array.prototype.find(function(item, index, arry) {})

功能: 查找数组第一个匹配项

查到, 返回查到的项, 查不到, 返回undefined

let arr = ['1', '2', '3', '50'];
arr.find(function(item, index, array) {
        console.log(item)
        console.log(index)
    }) //1 0 2 1 3 2 50 3
let arr = ['1', '2', '3', '50'];
console.log(arr.find('1')); //报错,1 is not a function
console.log(arr.find(1)); //报错,1 is not a function
let arr = ['1', '2', '3', '50'];
console.log(arr.find(function(item) {
        return item === '1'
    })) //1
let arr = ['1', '2', '3', '50'];
console.log(arr.find(function(item) {
        return item === '8'
    })) //undefined

Array.prototype.findIndex(function(item, index, array) {})

功能: 查找数组第一个匹配项的下标

查到, 返回项的下标, 查不到, 返回 - 1

let arr = ['1', '2', '3', '50'];
arr.findIndex(function(item, index, array) {
        console.log(item)
        console.log(index)
    }) //1 0 2 1 3 2 50 3
let arr = ['1', '2', '3', '50'];
console.log(arr.findIndex('1')); //报错,1 is not a function
console.log(arr.findIndex(1)); //报错,1 is not a function
let arr = ['1', '2', '3', '50'];
console.log(arr.findIndex(function(item, index) {
        return item === '1'
    })) //0
let arr = ['1', '2', '3', '50'];
console.log(arr.findIndex(function(item) {
        return item === '8'
    })) //-1

Array.prototype.fill(填充的内容,? startIndex, ? endIndex)

会改变原数组, 返回值为改变后的数组

功能: 填充数组

填充的内容可以是任何类型, 对象, 数组。。。

let arr = [1, 3, 4, 5, 6, 7];
console.log(arr.fill('a')) //[ 'a', 'a', 'a', 'a', 'a', 'a' ]
let arr = [1, 3, 4, 5, 6, 7];
console.log(arr.fill('a', 3)) //[ 1, 3, 4, 'a', 'a', 'a' ]
let arr = [1, 3, 4, 5, 6, 7];
console.log(arr.fill('a', 2, 4)) //[ 1, 3, 'a', 'a', 6, 7 ]

Array.prototype.includes(检验的元素)

功能: 查找数组是否包含指定元素

返回值是布尔值

indexOf()

NaN的操作 indexOf 为 - 1

includes 为true

let arr = [1, 2, 4, 5, 6];
console.log(arr.includes('2')) //false
console.log(arr.includes(2)) //true
let arr = [1, 2, 3, NaN];
console.log(arr.includes(NaN)) //true
console.log(arr.indexOf(NaN)) //-1

Array.prototype.flat(要拉平的级数)

就是基层, 参数为数字

功能: 把潜逃的数组拉平

node 不支持 flat, 在终端打开会报错

let arr = [1, 2, 3, 4, [12, 3, 4]]
console.log(arr.flat()) //[1, 2, 3, 4, 12, 3, 4]
let arr = [1, 2, 3, 4, [12, [1, 2], 3, 4]]
console.log(arr.flat()) //[1, 2, 3, 4, 12, Array(2), 3, 4]
console.log(arr.flat(2)) //[1, 2, 3, 4, 12, 1, 2, 3, 4]

便利遍历器对象 遍历器对象( Iterator)

遍历遍历器对象的方法

for…of… 可以使用到的范围包括数组,Set结构,Map结构,某些类似数组的对象,后文的Gernerator对象,字符串

遍历器对象的一些配置keys values entries

let arr = [1, 2, 3];
console.log(arr.keys()) // 输出遍历器对象的下标
console.log(arr.values()) //输出的是遍历器对象的值
console.log(arr.entries()) //输出的是遍历器对象的值,是个数组
let arr = [1, 2, 3];
for (let key in arr.keys()) {
    console.log("---");
    console.log(key);
} //用(for  in) 不可以遍历遍历器对象
let arr = [1, 2, 3];
for (let key of arr.keys()) {
    console.log(key)
} //输出的是下标
let arr = [1, 2, 3];
for (let key of arr.values()) {
    console.log(key)
} //输出的是每个的值
let arr = [1, 2, 3];
for (let key of arr.entries()) {
    console.log(key)
} //输出的是对象,每个的下标和值
let arr = ['q', 'w', 'e', 's'];
for (let key of arr.entries()) {
    console.log(key)
}
let arr = ['q', 'w', 'e', 's'];
let val = arr.keys()
console.log(val.next()) //{value: 0, done: false}
let arr = ['q', 'w', 'e', 's'];
let val = arr.values();
console.log(val.next()) //{value: "q", done: false}
console.log(val.next()) //{value: "w", done: false}
console.log(val.next()) //{value: "e", done: false}
console.log(val.next()) //{value: "s", done: false}
console.log(val.next()) //{value: undefined, done: true}
let arr = ['q', 'w', 'e', 's'];
let val = arr.entries();
console.log(val.next()) //index.js:289 {value: Array(2), done: false}
console.log(val.next()) //index.js:289 {value: Array(2), done: false}
console.log(val.next()) //index.js:289 {value: Array(2), done: false}
console.log(val.next()) //index.js:289 {value: Array(2), done: false}
console.log(val.next()) //index.js:292 {value: undefined, done: true}

猜你喜欢

转载自blog.csdn.net/weixin_42446516/article/details/91575989