2016-06-09 70 views
0

考虑以下数组,其中包含对象的数组:如何按属性过滤对象数组?

[ 
    [ 
    {color: blue, size: 3}, 
    {color: red, size: 1}, 
    {color: blue, size: 4} 
    ], 
    [ 
    {color: blue, size: 4}, 
    {color: green, size: 9}, 
    {color: gren, size: 3} 
    ] 
] 

我怎么能过滤数据,所以,我只能与具有蓝色的proprty对象离开了,就像这样:

[ 
    [ 
    {color: blue, size: 3}, 
    {color: blue, size: 4} 
    ], 
    [ 
    {color: blue, size: 4} 
    ] 
] 

它在D3js的上下文中,但这可能只是一个普通的JavaScript问题。

+1

你熟悉的['filter'](https://developer.mozilla.org/en-US/ docs/Web/JavaScript/Reference/Global_Objects/Array/filter)方法? –

+0

强烈关联:http://stackoverflow.com/a/11657379/1026459 –

回答

2

这里有一种方法:

outputArray = inputArray.map(function(a) { 
       return a.filter(function(el) { return el.color === "blue"; }); 
       }); 

.map()方法创建一个新的数组,其元素会打电话给你提供原始数组中的每个元素的函数的结果。 (如果要覆盖原始数组,只需将结果分配给相同的变量而不是新的数组。)

.filter()方法创建一个新数组,其中只包含通过测试的原始元素你通过它的功能。

延伸阅读:

0

你可以使用if-else语句来遍历数组,使用循环的蓝色。