剩余参数
//...三个点表示调用所有的参数
const sum = (...args) => {
let total = 0;
args.forEach(item => total += item);
return total;
};
console.log(sum(10,20));
console.log(sum(10,20,30));//60
剩余参数和解构配合使用
//在s2前面加三个点。。。则s2接收剩余元素
//如果不加。。。的话对应第二个参数
let stydents = ['11','22','33'];
let [s1,...s2] = students;
console.log(s1);//11
console.log(s2);//22,33
Array的扩展方法
扩展运算符(展开语法)
扩展运算符可以将数组或者对象栈转化为用逗号隔开的参数序列
let ary = [1,2,3];
...ary//1, 2, 3
console.log(..ary);//1 2 3
console.log(1, 2, 3)//1 2 3
参数序列的逗号会被当做方法的参数分隔符
合并数组
//方法一
let ary1 = [1,2,3];
let ary2 = [4,5,6];
let ary3 = [...ary1,..ary3];
console.log(ary3);//[1,2,3,4,5,6];
//方法二
ary1.push(...ary2);
console.log(ary1);//[1,2,3,4,5,6];
扩展运算符(展开语法)
将类数组或可遍历对象转换成真正的数组
let oDivs = document.getElementsByTagName('.div');
//元素的集合实际上是伪数组
var ary = [...oDivs];
ary.push('a');
console.log(ary);//在控制台看数组就可以看到后面多了一个a
把伪数组转化成以逗号分隔的参数序列,再加上一个数组中括号,如此伪数组就能转化成真正的数组
构造函数方法Array.from()
- 将类数组或可遍历对象转化为真正的数组
let arrayLike = {
'0': 'a',
'1': 'b',
'2': 'c',
length: 3//这里必须加length
};
let arr2 = Array.from(arrayLike);
//['a','b','c']
- 方法还可以接受第二个参数,作用类似于数组的map方法,用来对每个元素进行处理,将处理后的值放入返回的数组中。
let arrayLike = {
'0': '1',
'1': '2',
length: 2//这里必须加length
};
let newAry = Array.from(aryLike,item => item *2);
console.log(ary);//[2,4]
//数组中有多少个元素函数就会被调用多少次
实例方法find
用来找出第一个符合条件的数组成员,如果没有找到的话,返回undefined
let ary = [{
id: 1;
name: '小楠楠',
},{
id: 2;
name:'litternannan‘,
}];
let target = ary.find(item,index) => item.id == 2);
console.log(target);
//查找的条件:id=2
//传入的是两个参数:值和索引
实例方法:findIndex()
用于找出第一个符合条件的数组成员的位置,如果没有找返回-1
let ary = [1,5,10,15];
let index = ary.findIndex(value,index) => value > 9);
console.log(index);//2
//这里虽然我们的10和15都满足条件,但我们只返回查找到的第一个符合条件的值
实例方法:includes()
表示某个数组是否包含给定的值,返回布尔值
[1,2,3].includes(2);//ture
[1,2,3].includes(4);//false