`
zhangdaiscott
  • 浏览: 440650 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
8fb25857-16b4-3681-ab5e-e319f45c42a8
Jeecg快速开发平台
浏览量:0
文章分类
社区版块
存档分类

数组方法find、filter、findIndex简介

阅读更多

前言

ES6提供了很多新的API,数组对象的尤为实用,但是如果我们没有在相对应的开发环境下,很难对这些API有深入的了解,毕竟实践出真知。

find、filter、findIndex这三个方法都是对于数组的查找,其中返回的值略微相关,所以在这里做一个介绍。

 

1.Array.prototype.find()

这是一个数组原型上的方法,调用格式应该是使用数组对象来调用,该方法接收一个回调函数callback,如:array.find(callback)
find方法用途是 查找符合条件的第一个数组元素
例子:

var array = [1,4,6,7,9,11,13];
//需求: 查找大于10的第一个数
function callback(elem){
    return elem > 10;
}
var dayu10 = array.find(callback);
console.log(dayu10); // 11

 

如果找不到,返回undefined

例子:

var array = [1,4,6,7,9,11,13];
//需求: 查找大于100的第一个数
function callback(elem){
    return elem > 100;
}
var dayu100 = array.find(callback);
console.log(dayu100); // undefined

 

很显然,这个方法比较适合用来 判断数组内是否包含某种条件的值的元素。

或者进一步扩展,查找json数组内包含某个值的对象。如下:

var array = [
    {name:'xxa',age: 15},
    {name:'xxb',age:18}
];
var xx = array.find(elem => elem.name === 'xxa');
console.log(xx); // {name:'xxa',age: 15}

 

2.Array.prototype.findIndex()

作为原型上的方法,调用和参数与find相同。
顾名思义,这个对比find方法,这个方法返回的是符合条件的元素的下标index
例子:

var array = [1,4,6,7,9,11,13];
//需求: 查找大于10的第一个数
function callback(elem){
    return elem > 10;
}
var dayu10index = array.find(callback);
console.log(dayu10index); // 5

 

如果找不到,返回-1,这点类似字符串查找的indexOf或者正则表达式的search,总而言之,无论什么查找方法,找不到就是-1.
例子:

var array = [1,4,6,7,9,11,13];
//需求: 查找大于100的第一个数
function callback(elem){
    return elem > 100;
}
var dayu100index = array.find(callback);
console.log(dayu100index); // -1

 

很显然,这个方法更适合用来 判断数组内是否包含某种条件的值的元素。

 

3.Array.prototype.filter()

作为原型上的方法,调用和参数如上。
filter方法,意思为过滤,同样接收一个回调函数callback,该方法的使用场景是 查找数组内符合指定条件的所有元素
例子:

var array = [1,6,5,9,7,16,18];
//查找偶数
function callback(elem){
    return elem % 2 === 0;
}
var oushu = array.filter(callback);
console.log(oushu);// [6,16,18];
该方法返回的是一个集合,即数组如果找不到,返回空数组[]。

例子:

var array = [1,6,5,9,7,16,18];
//查找大于20的数
function callback(elem){
    return elem > 20;
}
var dayu20 = array.filter(callback);
console.log(dayu20);// [];
 

 

结语

这三个方法,都是对数组元素的查找,find返回第一个符合的元素的值,findIndex返回第一个符合的元素的下标,filter返回符合的元素的集合。
这三个方法都不会改变原数组的值,具有很大的相同点,所以在这里统一介绍。
相关链接 MDN web docs -- Array

 

文章转载自:https://segmentfault.com/a/1190000018788191

分享到:
评论

相关推荐

    详解ES6数组方法find()、findIndex()的总结

    本文主要讲解ES6数组方法find()与findIndex(),关于JS的更多数组方法,可参考以下: ①JavaScript 内置对象之-Array ②ES5新增数组方法(例:map()、indexOf()、filter()等) ③ES6新增字符串扩张方法includes()、...

    ES6数组方法find()、findIndex()的总结

    本文主要讲解ES6数组方法find()与findIndex(),关于JS的更多数组方法,可参考以下: ①JavaScript 内置对象之-Array ②ES5新增数组方法(例:map()、indexOf()、filter()等) ③ES6新增字符串扩张方法includes()、...

    js代码-数组的迭代方法测试 every() filter() forEach() map() find() findIndex() some()

    例如,`every()`和`some()`可以用来做条件检查,`filter()`和`map()`常用于数据转换和过滤,而`forEach()`和`findIndex()`则用于执行通用的迭代任务或定位特定元素。了解并熟练掌握这些方法,能显著提升JavaScript...

    ES6数组方法比较示例

    本示例将深入探讨几个关键的ES6数组方法,包括`map()`, `filter()`, `reduce()`, `find()`, `findIndex()`以及`forEach()`,并通过具体的代码实例来展示它们的用法和差异。 1. **`map()`方法**: - `map()`方法...

    JS 数组遍历的方法

    `filter`方法用于创建一个新的数组,其中包含通过提供的函数测试的所有元素: ```javascript let evenNums = arr.filter((value) => value % 2 === 0); console.log(evenNums); // [2, 4] ``` 5. `reduce` `reduce...

    数组方法ES6迭代器

    `filter()`方法创建一个新数组,包含所有通过所提供函数测试的元素。这在你需要过滤出满足特定条件的元素时非常有用: ```javascript let numbers = [1, 2, 3, 4, 5]; let evenNumbers = numbers.filter((num) => ...

    js代码-js数组查找元素 findIndex() 方法,返回第一个匹配元素下标

    在实际应用中,`findIndex()`可以与`Array.prototype.map()`、`Array.prototype.filter()`等其他数组方法结合使用,实现更复杂的查找操作。例如,如果你想知道数组中有多少个元素满足特定条件,可以先用`findIndex()...

    JS数组方法汇总

    - `findIndex()` 查找满足条件的第一个元素的索引,返回索引,不改变原数组。 7. **排序与反转** - `sort()` 对数组进行排序,默认按字符串顺序,可以传入比较函数自定义排序规则。 - `reverse()` 反转数组元素...

    会改变数组的方法和不会的.pdf

    4. findIndex():返回数组中满足提供的测试函数的第一个元素的索引,不影响数组。 5. includes():判断数组是否包含某个值,返回布尔值,不改变数组。 6. indexOf():返回指定元素在数组中的第一个索引,如果不存在...

    js代码-仿写数组函数 - findIndex

    在JavaScript中,`findIndex`是一个非常实用的数组方法,它允许我们查找数组中满足特定条件的第一个元素的索引。这个方法返回匹配条件的元素索引,如果找不到符合条件的元素,则返回-1。在本教程中,我们将深入理解`...

    ES6常用的新数组方法

    这些方法包括`.some()`, `.every()`, `.filter()`, `.find()`, `.findIndex()`, `.forEach()`, `.includes()`, 和 `.map()`。下面将详细解释这些方法的使用和功能。 1. **.some()**: `.some()`方法用于检测数组中...

    js代码-js数组查找元素 find() 方法,只返回第一个匹配元素

    此外,`find()`方法与`filter()`方法的区别在于,`filter()`会返回所有符合条件的元素组成的新的数组,而`find()`只返回第一个符合条件的元素。 在实际开发中,`find()`方法广泛应用于数据检索、过滤等场景,特别是...

    es6 filter() 数组过滤方法总结

    - `Array.findIndex(x=>x)` 返回数组中满足提供的测试函数的第一个元素的索引,否则返回-1。 通过上述示例和方法的详细说明,我们可以看出filter()方法的强大之处在于它能够基于复杂的条件来过滤数组,而且它不会...

    JavaScript数组方法的错误使用例子

    `Array.indexOf`方法返回指定元素在数组中首次出现的索引,如果未找到则返回-1。在某些场景下,如需要获取元素位置时,`indexOf`非常有用。然而,当我们的目标仅仅是判断元素是否存在于数组中时,`indexOf`就显得不...

    详解es6新增数组方法简便了哪些操作

    `Array.findIndex()`方法返回数组中符合条件的第一个元素的索引值,如果找不到,则返回`-1`。 ```javascript let a = [1,2,3,4,5]; let b = a.findIndex(item => item > 2); console.log(b); // 2 ``` 这些...

    数组、集合、列表与数据表的查找速度比较

    又因为列表与数据表两种方案又有多种查询方法,此程序又加上了列表的find与findindex方法的比较和数据表的rows.find方法与其对应的dataview的findrows方法、filter方法的执行速度比较 程序用vb2010编写,需要.net ...

    Array-Methods-JS:数组-方法-JS

    2. 不改变原数组的方法(创建新数组):这些方法不会改变原始数组,而是返回一个新的数组,如`slice`, `concat`, `filter`, `map`, `reduce`, `flatMap`, `find`, `findIndex`, `slice`, `copyWithin`, 和 `entries`...

    es6数组的方法的集合

    23. `findIndex()`:与 `find()` 类似,但返回满足条件的元素的索引,找不到返回 `-1`。 ```javascript let arr = [1, 2, 3, 4, 5]; let index = arr.findIndex(x => x > 3); console.log(index); // 输出:3 ``` ...

Global site tag (gtag.js) - Google Analytics