根据另一个数组过滤数组

时间:2014-06-05 18:13:09

标签: javascript jquery arrays underscore.js

我正在尝试使用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});
});

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

2 个答案:

答案 0 :(得分:2)

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

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

应该做你想做的事。

答案 1 :(得分:0)

更现代的javascript:

chartOptions.series.filter(series => categoryNames.includes(series.category))