ES6中对数组的扩展

1.扩展运算符
可以将一个数组转为参数序列

let arr = [1,2,3,4,true,null,undefined];
console.log(...arr);  //1 2 3 4 true null undefined
console.log(...[1,2,3,4]); //1 2 3 4

2.Array.from
可以将类数组对象或是可遍历的interable对象转为数组,包括ES6新增的Set和Map

let likeArr = {
    '0':'hello',
    '1':'world',
    '2':'!!',
    length:3
};
//ES6
console.log(Array.from(likeArr)); //[ 'hello', 'world', '!!' ]
//ES5中可以这样写
console.log(Array.prototype.slice.call(likeArr)); //[ 'hello', 'world', '!!' ]

3.Array.of()
可以将一组值转为数组。
同时也弥补了ES5中,var arr = new Array(5)这种方式得到的不是[5],而是[ , , , , ,],5个undefined

let arr  = Array.of(5);
console.log(arr); //[ 5 ]
let arr2 = Array.of(1,'2',true,undefined); //[ 1, '2', true, undefined ]
console.log(arr2);

4.copyWithin()方法
指定数组中的元素替换原有的元素,它会改变原数组
有三个参数

  1. 第一个参数(必填),开始替换的位置,0表示1号位置,1表示2号位置,一次类推,如果是负值,表示倒数第几个,-1表示倒数第一个。
  2. 第二个参数(选填),开始读取数据的位置,默认为0,正值表示下标,负值为倒数第几个。
  3. 第三个参数(选填),结束读取数据的位置,默认为arr.length,正值表示下标,负值为倒数第几个。不包括本身,如果开始位置下标为1,结束位置下标为3,则读取到的是下标为1和2的数据。
let arr = [1,2,3,4,5];
arr.copyWithin(0,1,3); //[ 2, 3, 3, 4, 5 ] 
console.log(arr); 

从0号位置开始替换,替换的值为从下标为2的位置到下标为4的位置,读取到的值为2和3,将2和3从0号位置替换,得到[2,3,3,4,5]。

5.数组的迭代方法find()和findIndex()
find()用于查找数组中第一个符合条件的元素,找到后就停止查找,如果未找到符合的元素,则返回undefined
findIndex()用于查找数组中的i一个符个条件的元素的下标,找到后就停止查找,没找到则返回-1

let arr = [1,2,3,4,5,6,7];
let result = arr.find((item) => {
    return item > 4;
});
console.log(result); //5  即使数组中不止一个大于4的元素,但只要找到一个就不会继续查找
let arr = [1,2,3,4,5,6,7];
let result = arr.findIndex((item) => {
    return item > 4;
});
console.log(result); //4  findIndex()找的是符合条件的元素的下标,元素5的下标为4

6.fill()方法
用给定的数值填充数组,会改变原数组
可以接收3个参数

  • 第一个参数,填充的值
  • 第二个参数,开始填充的位置
  • 第三个参数,结束填充的位置
let arr = [1,2,3,4,5,6,7];
arr.fill(8);
console.log(arr); //[ 8, 8, 8, 8, 8, 8, 8 ]
arr.fill(9,1,3);
console.log(arr); //[ 8, 2, 2, 8, 8, 8, 8 ]

7.keys()方法 values()方法和entries()方法
它们都用于遍历数组,返回的都是一个遍历器对象,可以使用ES6中新增的for…of对齐返回值进行遍历。

  • keys() 遍历的是键名
  • values() 遍历的是键值
  • entries() 遍历的是键值对
let arr = ['a','b','c'];
let keys = arr.keys();
for (let key of keys){
    console.log(key);  //键名
    //0
    //1
    //2
}
let values = arr.values();
for (let key of values){
    console.log(key);   //键值
    //'a'
    //'b'
    //'c'
}
let entries = arr.entries();
for (let [key,value] of entries){
    console.log([key,value]); //键值对
    //[ 0, 'a' ]
    //[ 1, 'b' ]
    //[ 2, 'c' ]
}

有不对的地方欢迎指出,共同学习 :)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值