使用 Javascript 有条件地过滤对象数组



我目前正在处理一个搜索API,其中对象的drive值可以是automatic,也可以是manual

var mixedResults = [{model: "328", drive: "automatic"}, {model: "328", drive: "manual"}, {model: "M4", drive: "automatic"}, {model: "M4", drive: "manual"}];
var linearResults = [{model: "328", drive: "manual"}, {model: "M3", drive: "manual"}];

我想做的是过滤所有具有automatic的对象,将这些对象保存到变量中,并排除所有其他对象。

这可以使用filter轻松完成,但有一个问题。如果搜索结果返回的集合中没有一个对象具有 automatic 值,我想改为保存manual对象的集合。

只需进行过滤并检查空集:

var mixedResults = [{model: "328", drive: "automatic"}, {model: "328", drive: "manual"}, {model: "M4", drive: "automatic"}, {model: "M4", drive: "manual"}];
var results = mixedResults.filter(function (x) {
  return x.drive === "automatic";
});
if (results.length === 0)
  results = mixedResults;

最新更新