根据另一个数组过滤数组

问题描述 投票:0回答:2

我试图使用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});
});

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

javascript jquery arrays underscore.js
2个回答
2
投票

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

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

应该做你想做的事。


0
投票

更现代的javascript:

chartOptions.series.filter(series => categoryNames.includes(series.category))
© www.soinside.com 2019 - 2024. All rights reserved.