有一些数据:
[
{
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....
答案 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; })