js查找和筛选的几种方式www.129028.com金沙

日期:2020-05-07编辑作者:Web前端

时间: 2019-09-06阅读: 108标签: 循环一、filter() 过滤数组

时间: 2019-11-29阅读: 153find();

创建一个新的数组,新的数组中的元素是通过检查指定数组中符合条件的元素;注意:1. filter()不会对空数组进行检测;2. filter()不会改变源是数组;

find() 方法返回通过测试(函数内判断)的数组的第一个元素的值。

let arr1 = [ { name: '橘子', price: '5', count: 20} , { name: '香蕉', price: '10.5', count: 30} , { name: '水蜜桃', price: '9', count: 15} ,]const newArr = arr1.filter( item = { return item.count = 10})console.log(newArr) /* [ {name: "橘子", price: "5", count: 20}, {name: "水蜜桃", price: "15", count: 23} ] //filter()会帮我们返回数组中所有符合的元素

find() 方法为数组中的每个元素都调用一次函数执行:

二、find()用于找到第一个符合条件的成员

当数组中的元素在测试条件时返回true时, find() 返回符合条件的元素,之后的值不会再调用执行函数。如果没有符合条件的元素返回 undefined

它的参数是一个回调函数,所有成员都必须执行这个回调函数,直到找到第一个返回值为true的成员,然后返回该成员,否则返回undefined;当数组中的元素找到符合条件时,返回true,且后面的值不会在执行该回调函数。

注意:find() 对于空数组,函数是不会执行的。

const arr = [34, 65, 87, 48, 99];const arrNew = arr.find(num = { return num = 66;});console.log(arrNew); // 87/* find()函数可以接收三个返回值,第一个是当前的值,第二个是当前值的位置(数组的下标),第三个值是原数组 */

注意:find() 并没有改变数组的原始值。

三、 map返回一个新数组,数组中的元素为原始数组处理过的值;

[1,2,3,4,5,6].find((n) = n  5)//找出数组中第一个大于5 的成员// 6array.find(function(currentValue, index, arr),thisValue)currentValue : 必需。当前元素index:可选。当前元素的索引值arr: 可选。当前元素所属的数组对象thisValue: 可选。 传递给函数的值一般用 "this" 值。如果这个参数为空, "undefined" 会传递给 "this" 值

注意:map不会对空数组进行检测;map不会修改原是数组;

findIndex();

const mapArr = [11,22,33,44,55,66];const newMapArr = mapArr.map( item = {return item / 11})console.log(newMapArr)[1,2,3,4,5,6]

findIndex() 方法返回传入一个测试条件(函数)符合条件的数组第一个元素位置。

四、 forEach() 用于调用数组中的每一个元素;

findIndex() 方法为数组中的每个元素都调用一次函数执行:

所有 forEach()方法可以拿到我们的数组中每一个值 , 也就是我们遍历数组了 ~

当数组中的元素在测试条件时返回true时, findIndex() 返回符合条件的元素的索引位置,之后的值不会再调用执行函数。如果没有符合条件的元素返回 -1

const arr = [1, 2, 3, 4]arr.forEach( val ={ console.log(val) }) // 1 2 3 4

注意:findIndex() 对于空数组,函数是不会执行的。

区别filter()和find()的区别:相同点:1. 都不会对空数组进行检测;2. 都不会改变原数组;不同点:filter()会返回符合条件的所有值,并且创建一个新的数组,find()只找到符合条件的第一个值,返回true,否则返回undefined;

注意:findIndex() 并没有改变数组的原始值。

[3,10,18,19].findIndex((n) = n = 18)//返回符合条件的值的位置(索引)// 2array.findIndex(function(currentValue, index, arr),thisValue)currentValue : 必需。当前元素index:可选。当前元素的索引值arr: 可选。当前元素所属的数组对象thisValue: 可选。 传递给函数的值一般用 "this" 值。如果这个参数为空, "undefined" 会传递给 "this" 值

filter();

filter() 方法创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素。(返回数组,包含了符合条件的所有元素。如果没有符合条件的元素则返回空数组。)

注意:filter() 不会改变原始数组。

注意:filter() 不会对空数组进行检测。

var arr = [1,2,3,4,5,6,7]var newArr = arr.filter(item = item  5);console.log(newArr); //[6, 7]array.filter(function(currentValue, index, arr),thisValue)currentValue : 必需。当前元素index:可选。当前元素的索引值arr: 可选。当前元素所属的数组对象thisValue: 可选。 传递给函数的值一般用 "this" 值。如果这个参数为空, "undefined" 会传递给 "this" 值//数组去重var arr = [1,2,2,3,4,4,5,6,6,7,8,8,9];var newArr = arr.filter((x, index,self)=self.indexOf(x) === index) console.log(newArr); // [1, 2, 3, 4, 5, 6, 7, 8, 9]

indexOf();

indexOf() 方法可返回某个指定的字符串值在字符串中首次出现的位置。

注释:indexOf() 方法对大小写敏感!

www.129028.com金沙,注释:如果要检索的字符串值没有出现,则该方法返回 -1。

lastIndexOf() 方法可返回一个指定的字符串值最后出现的位置,在一个字符串中的指定位置从后向前搜索。

stringObject.indexOf(searchvalue,fromindex)该方法将从头到尾地检索字符串 stringObject,看它是否含有子串 searchvalue。开始检索的位置在字符串的 fromindex 处或字符串的开头(没有指定 fromindex 时)。如果找到一个 searchvalue,则返回 searchvalue的第一次出现的位置。stringObject 中的字符位置是从 0 开始的。

var str= "aaa456ac";console.log(arr.indexOf(‘b‘)); // -1 , 字符b第一次出现的位置,没有,返回-1;console.log(arr.indexOf(‘a‘)); // 0 , 字符a第一次出现的位置,是 0console.log(arr.indexOf(‘a‘, 3)); // 6, 从第四个字符位置开始往后继续查找,包含当前位置 console.log(arr.indexOf(‘ac‘, 3)); // 6, 字符串ac第一次出现的位置console.log(arr.lastIndexOf(‘a‘)); // 6, 字符串a最后出现的位置

some() ;

some() 方法用于检测数组中的元素是否满足指定条件(函数提供)。

some() 方法会依次执行数组的每个元素:

如果有一个元素满足条件,则表达式返回true , 剩余的元素不会再执行检测。如果没有满足条件的元素,则返回false。

注意:some() 不会对空数组进行检测。

注意:some() 不会改变原始数组。

array.some(function(currentValue,index,arr),thisValue)var arr = [1,2,3,4,5,6,7]var isHas = arr.some(item = item  5);console.log(isHas ); // truevar isHas2 = arr.some(item = item  7);console.log(isHas2 ); // false

every() ;

本文由www.129028.com金沙发布于Web前端,转载请注明出处:js查找和筛选的几种方式www.129028.com金沙

关键词:

www.129028.com金沙a标签调用js的几种方法

时间: 2019-09-10阅读: 249标签: 标签 a标签点击事件方法汇总 a 标签的 href 属性用于指定超链接目标的 URL,href属性的值可...

详细>>

实现一个前端路由,www.129028.com金沙如何实现浏览器的前进与后

时间: 2019-09-09阅读: 194标签: 路由1. 需求 写在前面:通常 SPA 中前端路由有2种实现方式: 如果要你实现一个前端路由...

详细>>

www.129028.com金沙:Vue 开发必须知道的 36 个技巧

时间: 2019-09-08阅读: 153标签: 技巧前言 Vue 3.x 的Pre-Alpha 版本。后面应该还会有 Alpha、Beta等版本,预计至少要等到 2020 年...

详细>>

HTTPS为什么是安全的?【www.129028.com金沙】

时间: 2019-09-07阅读: 202标签: 安全 二、HTTP与HTTPS的区别 1、https协议需要到ca申请证书 2、http是吵文本传输协议,信息是...

详细>>