2014-06-05 80 views
0

我想使用Underscore根据另一个数组中的匹配过滤数组。基于另一个阵列过滤数组

我有一个数组chartOptions.series它看起来像这样

[{category: "A"}, {category: "B"}, {category: "C"}] 

我想,这样我只保留存在于所谓的CATEGORYNAMES另一个数组,它看起来像这样

[0: "A", 1: "B"] 
元素筛选这个数组

鉴于这种情况下我会想到这个结果

[{category: "A"}, {category: "B"}] 

他重新是我到目前为止

chartOptions.series = _.filter(chartOptions.series, function(series) { 
    return _.where(categoryNames, {"": series.category}); 
}); 

这不起作用,它不会过滤任何东西。我错过了什么?

+1

'[{“A”},{“B”}]'在语法上无效。它看起来如何?如果您不确定,请使用'JSON.stringify()'。 – Bergi

+0

'[{“A”},{“B”}]'无效。 ????? – Jai

回答

2

假设[0: "A", 1: "B"]实际上["A", "B"]是,你可以使用_.contains

var categoryNames = ["A", "B"]; 
_.filter(chartOptions.series, function(series) { 
    return _.contains(categoryNames, series.category) 
}); 

应该做你想要什么。

+0

为简单起见,可能需要将'contains'替换为'categoryNames.indexOf(series.category)> = 0' –