我有一个像这样的Javascript对象...

var strategies = [{
    "strategy": {
        "category": "war"
    }
}, {
    "strategy": {
        "category": "farming"
    }
}]


然后,我有一个数组,指示我想要返回的结果。它可以是以下任意值:[]["war"] ["farming"]["war", "farming"]

如果我们有[],我想不返回任何结果。但是如果["war", "farming"]我想返回上面的两个结果。

如何使用Array.prototype.filter完成此操作?我看到了this post,但无法推理。

strategies.filter((strategy) =>
  ????
)


谢谢你的帮助。

最佳答案

您可以使用indexOf检查值:

var categories = ['war', 'farming'];

var filtered = strategies.filter((obj) => {
  return categories.indexOf(obj.strategy.category) > -1;
});

10-06 07:42