我正在尝试使用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});
});
这不起作用,它不会过滤任何东西。我错过了什么?
答案 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))