怎么使用js查找数组中符合条件的元素
今天小编给大家分享一下怎么使用js查找数组中符合条件的元素的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。
一、利用for循环进行查找
let arr = [ {name: 'zhangsan', age: 18}, {name: 'lisi', age: 17}, {name: 'xiaoming', age: 18},],result = []for (let item of arr){ if(item.age === 18){ result.push(item); }}console.log(result);// [{name: 'zhangsan', age: 18},{name: 'xiaoming', age: 18}]
二、filter() 方法
注意:
filter() 方法创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素。
filter() 不会对空数组进行检测。
filter() 不会改变原始数组。
let arr = [ {name: 'zhangsan', age: 18}, {name: 'lisi', age: 17}, {name: 'xiaoming', age: 18},];let result = arr.filter(item=>item.age === 18)console.log(result);// [{name: 'zhangsan', age: 18},{name: 'xiaoming', age: 18}]
三、find()方法
注意:
find()方法只返回数组中满足条件的第一个元素,并非所有元素
当数组中的元素在条件返回 true 时, find() 返回符合条件的元素,之后的值不会再调用执行函数。
如果没有符合条件的元素返回 undefined
find() 对于空数组,函数是不会执行的。
find() 并没有改变数组的原始值。
let arr = [ {name: 'zhangsan', age: 18}, {name: 'lisi', age: 17}, {name: 'xiaoming', age: 18},];let result = arr.find(item=>item.age === 18)console.log(result);// {name: 'zhangsan', age: 18}
附:JavaScript查找一个数组中符合某个条件的值,并将符合条件的值存入新的数组
利用find函数和es6箭头函数,下面方法取到数组中满足条件的第一个元素;
var newArray = {};//新对象var array = [ {name:'aiai',age:18}, {name:'sisi',age:18}, {name:'lulu',age:18}, {name:'sisi',age:19}]; //查找符合条件值并存入新数组newArrar = this.array.find((item) => { if(item.name === 'sisi'){ return item } })//此时 newArray = {name:'sisi',age:18}
查找符合条件的所有元素
var newArray = [];//新数组var j = 0;var array = [ {name:'aiai',age:18}, {name:'sisi',age:18}, {name:'lulu',age:18}, {name:'sisi',age:19}]; //目标数组 //查找符合条件值并存入新数组for(let i in array){ if(array[i].name == 'sisi'){ newArray[j++] = array[i] }}//此时 newArray = [{name:'sisi',age:18},{name:'sisi',age:19}]
以上就是“怎么使用js查找数组中符合条件的元素”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注编程网行业资讯频道。
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341