nodelist伪数组转数组,让其拥有数组方法
扩展运算符 ...
let arr = document.querySelectorAll('ul li');
// 当获取dom元素list的时候,所得到的是伪数组,不具备数组方法,怎么去转化成数组呢
// es5之前的写法是利用循环或者slice.call来转化
let newArr = [].slice.call(arr);
//demo1 es6的扩展运算符写法
let newArr = [...arr]; // 此时arr就转化成newArr,变成数组。
Array.from()
作用:把伪数组转化成数组(arguments,或dom元素集合)
let arr = document.querySelectorAll('ul li');
let newArr = Array.from(arr); // 伪数组转化成数组
// string也可以转化成ARRAY,es5之前string变成数组是要用到split切割。
let name = 'hahaha';
let nameArr = name.split(''); //arr
//es6 Array.from写法
let newNameArr = Array.from(name); //arr
个人猜测,只要存在length,就可以使用Array.from()让其转化成数组
let json1 = {
0:'a',
1:'b',
2:'c',
3:'d'
}
let arr = Array.from(json1); // [] 得到的空数组,因为没有length
let json2 = {
0:'a',
1:'b',
2:'c',
3:'d',
length:4
}
let arr = Array.from(json2); // ['a','b','c','d']
Array.of(): 把一组值转化成数组
let arr = Array.of('a','b','c');
console.log(arr); // ['a','b','c']
Array.find(): 找到第一个符合条件的元素,并返回
let arr3 = [1,2,3,45,5,6,7];
let newArr3 = arr3.find((val, index, arr) => { // 类似循环 val当前值 index 当前下标 arr当前整个数组
return val>6;
})
console.log(newArr3); // 45,是第一个符合条件的 元素,所以返回
// 如果没找到符合条件的元素,返回undefined
Array.findIndex(): 返回的是符合条件元素的下标位置,和find一样的使用方法,如果没找到符合的元素返回-1.找到则返回符合元素的对应下标。
Array.fill(填充元素,开始位置,结束位置) 填充数组
let arr5 = new Array(10);
arr5.fill('默认值',1,4);
console.log(arr5);
ES2016新增
Array.includes() // 类似于Array.indexOf() 区别在于,includes返回true false ,indexOf返回下标或-1
let arr6 = [1,2,3,4];
let newArr6 = arr6. includes(2);
console.log(newArr6);