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

时间:2015-04-10 21:29:20

标签: javascript arrays hash key-value

我目前正在处理搜索API,其中对象的drive值可以是automaticmanual

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对象的集合。

1 个答案:

答案 0 :(得分:2)

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

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;