es6 数组方法
1.扩展运算符(…):将一个数组转换成序列,合并数组
2.Array.from方法用于将两类对象转为真正的数组:适用于具有遍历器接口的对象
类似数组的对象(array-like object)和可遍历(iterable)的对象
3.Array.of 将一组值转换成数组
为了弥补Array();只有一个元素或没有元素时的缺陷;因为Array(1);//[empty]
4.copyWithin 将指定位置的成员复制到其他位置并覆盖原有位置
参数一:指定位置;参数二:从哪位开始;参数三:到那位结束(不包括结束)
5.find 找出匹配成员并返回
6.findIndex 找出匹配元素并返回对应的索引
7.fill填充数组
8.keys、values、entries遍历数组
9.includes 检测数组中是否包含某个值
10.flat数组降维,默认降低一维,参数写为Infinity可以降低多维
11.flatMap 类似map映射
<script>
//扩展运算符(...)将数组转换成序列
let arr=[1,2,3,4];
console.log(...arr);
//扩展运算符替代apply();
console.log(Math.max.apply(null, [1, 2, 3]));
console.log(Math.max(...arr));
//合并数组
let z=[1,2,3];
let w=[4,5,6];
//console.log(...z,...w);
z.push(...w);
console.log(z);
//复制数组 而且改变原数组的值不会对新克隆的数组产生影响
let e=[1,2,3];
let e2= [...e];
e[2]=4;
console.log(e2);
//扩展运算符实现iterator遍历器接口
let obj={
0:'a',
1:'b',
2:'c',
3:'d',
length:4,
[Symbol.iterator]:Array.prototype[Symbol.iterator]
}
console.log(...obj);
let set=new Set([1,2,3,4]);
console.log(...set);
let list=[['name','小花'],['sex','男']];
let map=new Map(list);
console.log(...map);
//将类数组转换成真正的数组 只适用于原型链上具有遍历器接口的类数组
let k={
0:'a',
1:'b',
2:'c',
3:'d',
length:4
}
//如果没有length属性返回的数组为空数组
console.log(Array.from(k));
console.log(k);
let str='abstract';
console.log(Array.from(str));
console.log(...str);
//如果已经是数组,将返回一个一样的新数组
let we=[1,2,3,4];
console.log(Array.from(we));
//Array.of 将一组值转换为数组
console.log(Array.of(1,2,3,4));
console.log(Array());//[]
console.log(Array(1));//[empty]
console.log(Array(1,2));//[1,2]
//Array.of是为了弥补数组为空和数组只有一个元素时的缺陷
console.log(Array.of());
console.log(Array.of(1));
console.log(Array.of(undefined));
//copyWithin 将指定位置的成员复制到其他位置并覆盖原有位置
//参数一:指定位置;参数二:从哪位开始;参数三:到那位结束(不包括结束)
let bar=[1,2,3,4,5];
console.log(bar.copyWithin(0,3));//4,5,3,4,5
console.log(bar.copyWithin(0,1,3))//5,3,3,4,5
//find 找出匹配成员并返回
let box=[1,2,3,5,4];
console.log(box.find(n=>n%2==0));
//findIndex找出匹配成员并返回索引
console.log(box.findIndex(n=>n%2==0));
console.log([NaN].indexOf(NaN));//-1
console.log([NaN].findIndex(y=>Object.is(NaN,y)))
//fill填充数组
console.log(new Array(10).fill('a'));
//start end
console.log(new Array(10).fill('a',2,5));
//数组可以用for of 遍历
let ret=[1,2,3,4,5];
for(let value of ret.values()){
console.log(value);
}
for(let keys of ret.keys()){
console.log(keys);
}
for(let [keys,values] of ret.entries()){
console.log(keys,values);
}
//includes检测数组中具有某个值 返回布尔类型值
console.log(ret.includes(2));
//flat 数组降维操作默认只能降低一维 带参数可以降低多维
let dot=[1,2,[[4,5]]];
console.log(dot.flat(2));
let duo=[1,2,[[[[[4,5]]]]]];
console.log(duo.flat(Infinity));
//flatMap 类似map方法 默认只展开一层
console.log([1,2,3].flatMap(function(item){
return item*2
}))
console.log([1,2,3].flatMap(function(item){
return [[item*2]];
}))
</script>