从具有特定属性的数组中获取对象

时间:2017-07-20 16:51:30

标签: javascript jquery

有一些数据:

[
 {
   property1: 1,
   property2: 2,     
 },
 {
   property1: 1,
   property2: 3,     
 },
 {
   property1: 2,
   property2: 3,     
 }
]

我需要将此数组的所有对象都放在property1=1。是否有更简单或更短的方式来执行此操作:

 for(var i=0;i<array.length;i++){
   if(array[i]["property1"]==1) ....//some action
 }

就像在jquery中我可以使用选择器作为DOM元素,如果我需要使用property1 = 1获得所有跨度我使用$("span[property1=1]").each....

3 个答案:

答案 0 :(得分:2)

您可以根据属性property1使用Array.filter过滤数组

var arr = [
   { property1: 1, property2: 2 },
   { property1: 1, property2: 3 },
   { property1: 2, property2: 3 }
];

var res = arr.filter( x => x.property1 === 1);

console.log(res)

Array.filter()为数组中的每个元素调用一次提供的回调函数,并构造一个包含所有值的新数组,其中回调返回一个强制为true的值。

只是跳过不通过回调测试的数组元素,并且不包含在新数组中。

答案 1 :(得分:1)

您可以像现在一样循环播放数组。您需要做的就是创建一个新数组并将找到的对象推送到该数组。

但是,有数组filter()功能:

  

filter()方法创建一个新数组,其中包含通过所提供函数实现的测试的所有元素。

com.google.atap.tangoservice

答案 2 :(得分:-5)

踢出了这个:为什么不用lodash?像:

 _.filter(arr, {property1: 1})

use arr.filter(o => { return o.property1 === 1; })