es6数组方法find()、findIndex()与filter()的总结

find()

该方法主要应用于查找第一个符合条件的数组元素。它的参数是一个回调函数。在回调函数中可以写你要查找元素的条件,当条件成立为true时,返回该元素。如果没有符合条件的元素,返回值为undefined。

以下代码在myArr数组中查找元素值大于4的元素,找到后立即返回。返回的结果为查找到的元素:

const myArr = [1,2,3,4,5,6];
var v = myArr.find(value => value> 4);
console.log(v);// 5

没有符合元素,返回undefined:

const myArr = [1,2,3,4,5,6];
var v = myArr.find(value => value > 40);
console.log(v);// undefined

 

回调函数有三个参数。value:当前的数组元素。index:当前索引值。arr:被查找的数组。

查找索引值为4的元素:

const myArr = [1,2,3,4,5,6];
var v = myArr.find((value,index,arr) => {
    return index == 4
});
console.log(v);// 5,元素值

findIndex() 

findIndex()与find()的使用方法相同,只是 当条件为true时 findIndex() 返回的是 索引值,而find()返回的是元素。如果没有符合条件元素时 findIndex() 返回的是 -1,而find()返回的是undefined。findIndex()当中的回调函数也是接收三个参数,与find()相同。

const bookArr=[
    {
        id:1,
        bookName:"三国演义"
    },
    {
        id:2,
        bookName:"水浒传"
    },
    {
        id:3,
        bookName:"红楼梦"
    },
    {
        id:4,
        bookName:"西游记"
    }
];
var i = bookArr.findIndex((value) => value.id == 4);
console.log(i);// 3,索引值
var i2 = bookArr.findIndex((value) => value.id == 100);
console.log(i2);// -1,没有符合的元素

filter()

filter()与find()使用方法也相同。同样都接收三个参数。不同的地方在于返回值。filter() 返回的是 数组,数组内是所有满足条件的元素,而find()只返回第一个满足条件的元素。如果条件不满足,filter()返回的是一个空数组,而find()返回的是undefined。

var userArr = [
    { id:1,userName:"laozhang"},
    { id:2,userName:"laowang" },
    { id:3,userName:"laoliu" },
]
console.log(userArr.filter(item => item.id > 1));
//[ { id: 2, userName: 'laowang' },{ id: 3, userName: 'laoliu' } ]

数组去重:

var myArr = [1,3,4,5,6,3,7,4];
console.log(myArr.filter((value,index,arr) => arr.indexOf(value) === index));
//[ 1, 3, 4, 5, 6, 7 ]

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
eS6(ES2015)引入了许多新的数组方法,以下是其中一些常见的方法: 1. `Array.from()`:将类数组对象或可迭代对象转换为真正的数组。 2. `Array.of()`:创建一个包含传入参数的新数组。 3. `Array.prototype.find()`:返回数组中满足条件的第一个元素。 4. `Array.prototype.findIndex()`:返回数组中满足条件的第一个元素的索引。 5. `Array.prototype.includes()`:判断数组是否包含指定的元素。 6. `Array.prototype.fill()`:用一个固定值填充整个数组或指定的部分。 7. `Array.prototype.keys()`:返回一个包含数组索引的新迭代器对象。 8. `Array.prototype.values()`:返回一个包含数组值的新迭代器对象。 9. `Array.prototype.entries()`:返回一个包含数组索引和值的新迭代器对象。 10. `Array.prototype.flat()`:将多维数组扁平化为一维数组。 11. `Array.prototype.flatMap()`:首先使用映射函数映射每个元素,然后将结果扁平化为一维数组。 12. `Array.prototype.forEach()`:对数组中的每个元素执行提供的函数。 13. `Array.prototype.map()`:创建一个新数组,其中每个元素为原始数组元素调用提供的函数的结果。 14. `Array.prototype.filter()`:创建一个新数组,其中仅包含满足条件的原始数组元素。 15. `Array.prototype.reduce()`:将数组元素通过提供的函数累积为单个值。 16. `Array.prototype.reduceRight()`:与`reduce()`相同,但从右向左处理数组元素。 17. `Array.prototype.some()`:检查数组中是否至少有一个元素满足条件。 18. `Array.prototype.every()`:检查数组中的所有元素是否都满足条件。 19. `Array.prototype.sort()`:原地对数组进行排序。 20. `Array.prototype.reverse()`:原地反转数组元素的顺序。 这些是ES6中常见的数组方法,它们提供了更便捷和灵活的方式来操作和处理数组
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值