ES6数组扩展
程序员文章站
2023-12-22 13:58:46
...
数组构造函数的静态方法。
静态方法:把函数当对象处理 key对应的value是函数 我们就说这个方法是静态方法 否则就是静态属性
Array.f=1;
console.log(Array.f);//静态属性
Array.fn=function(){console.log(123);}
Array.fn();//静态方法
Array.from
方法用于将两类对象转为真正的数组:类似数组的对象(array-like object)和可遍历(iterable)的对象(包括ES6新增的数据结构Set和Map)。
function sum(){
//console.log(arguments);//参数 类数组结构
let res=0;
/*
for(let i=0;i<arguments.length;i++){
res+=arguments[i];
}
*/
//console.log(Array.from(arguments));//变成一个数组
Array.from(arguments).forEach(function(item){
res+=item;
});
console.log(res);
}
sum(1,2,3,4,5,6,7,8,9);
将类数组对象转化为数组:
let arrLikeList={
0:123,
1:234,
length:2
};
console.log(Array.from(arrLikeList));
Array.of
方法用于将一组值,转换为数组。
Array.of(3, 11, 8) // [3,11,8]
Array.of(3) // [3]
Array.of(3).length // 1
扩展原算符:
let arr1=[1,2,3];
let arr2=arr1;//arr1与arr2互相影响
arr1[0]=100;
console.log(arr2);
function copy(arr){
let res=[];
for(var i=0;i<arr.length;i++){
res[i]=arr[i];
}
return res;
}
let arr3=[1,2,3];
let arr4=copy(arr3);
arr3[0]=100;
console.log(arr3);//不会互相影响
console.log(arr4);
let arr5=[1,2,3];
let arr6=[...arr5];//Array.from(arr5)
arr5[0]=100;
console.log(arr5,arr6);
let arr7=[3];
let arr8=[1,2,...arr7,4,5,6];
console.log(arr8);
数组实例的find
方法,用于找出第一个符合条件的数组成员。它的参数是一个回调函数,所有数组成员依次执行该回调函数,直到找出第一个返回值为true
的成员,然后返回该成员。如果没有符合条件的成员,则返回undefined
。
//找到回调函数返回的调价满足返回 返回第一次满足条件的值
console.log([1,2,3,4].find(function(item,index,arr){
//console.log(item);
return index>1;//返回第一个index大于1的值
}));//3
数组实例的findIndex
方法的用法与find
方法非常类似,返回第一个符合条件的数组成员的位置,如果所有成员都不符合条件,则返回-1
。
//返回第一次满足条件的索引
console.log([1,7,8,0].findIndex(function(item,index,array){
return item>6;//返回第一个值大于6 的下标
}));//1
//console.log([1,2,3,4].includes(value,index));//从index开始查询value返回true或false
console.log([1,2,3,4].includes(2,3));// false 从下标为3 查找2是否存在