ES6数组新增方法

//find    findIndex

数组实例的find方法,用于找出第一个符合条件的数组成员。它的参数是一个回调函数,所有数组成员依次执行该回调函数,直到找出第一个返回值为true的成员,然后返回该成员。如果没有符合条件的成员,则返回undefined

find的回调函数也可以接受三个参数item,index,arr

console.log([1,2,3,4,5,6,-9].find(n=>n<0)) // -9
console.log([1,2,3,4,5,6,-9].find(n=>n>10)) // undefined

数组实例的findIndex方法的用法与find方法非常类似,返回第一个符合条件的数组成员的位置,如果所有成员都不符合条件,则返回-1

console.log([1,2,3,4,5,6,-9].findIndex(n=>n<0)) // 6
console.log([1,2,3,4,5,6,-9].findIndex(n=>n>10)) // -1

这两个方法都可以接受第二个参数,用来绑定回调函数的this对象。

var arr=[1,2,3,4,5,10,11,22]
function f(v) {
    return v>this.age
}
var person={
    age:10,
    name:'stupidcc'
}
 arr.find(f,person) // 11

另外,这两个方法都可以发现NaN,数组的indexOf方法是无法做到的

console.log([NaN].indexOf(NaN)) //-1  无法识别NaN (主要是因为NaN==NaN是false)
console.log([NaN].find(n=>Object.is(NaN,n))) //NaN   找到了NaN (因为Object.is(NaN,NaN)是true)
console.log([NaN].findIndex(n=>Object.is(NaN,n)))//0  找到了NaN的下标

遍历方法 entries()  keys()  values()

可以用for...of循环进行遍历,唯一的区别是keys()是对键名的遍历、values()是对键值的遍历,entries()是对键值对的遍历。

for (let index of ['a', 'b'].keys()) {
  console.log(index);
}
// 0
// 1

for (let elem of ['a', 'b'].values()) {
  console.log(elem);
}
// 'a'
// 'b'

for (let [index, elem] of ['a', 'b'].entries()) {
  console.log(index, elem);
}
// 0 "a"
// 1 "b"

includes

表示某个数组是否包含给定的值,与字符串的includes方法类似 

[1, 2, 3].includes(2)     // true
[1, 2, 3].includes(4)     // false
[1, 2, NaN].includes(NaN) // true

flat()  flatMap() 

对于二维三维的数组,用于将嵌套的数组“拉平”,变成一维的数组。

该方法返回一个新数组,对原数据没有影响。 

flat()默认只会“拉平”一层,如果想要“拉平”多层的嵌套数组,可以将flat()方法的参数写成一个整数,表示想要拉平的层数,默认为1。

console.log([1,2,[3,4]].flat()) //[1,2,3,4]
console.log([1,2,[3,4,[5]]].flat()) //[1,2,3,4,[5]]
console.log([1,2,[3,4,[5]]].flat(2))//[1,2,3,4,5]
console.log([1,2,[3,4,[5,[6]]]].flat(Infinity))//[1,2,3,4,5,6] 不管多少层都拉平

如果原数组有空位,flat()方法会跳过空位。这个方法可以用来清除一维数组的空数据

console.log([1,,2,,3,4].flat()) //[1,2,3,4]

flatMap()方法对原数组的每个成员执行一个函数(相当于执行Array.prototype.map()),然后对返回值组成的数组执行flat()方法。该方法返回一个新数组,不改变原数组

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值