JS/jQuery:按数组过滤对象属性

yma*_*man 0 javascript arrays

让我们看一个 JS 对象示例(又名“关联数组”):

var zoo = {
  monkey: { legs: 4, color: "black" },
  fish: { legs: 0, color: "yellow" },
  turtle: { legs: 4, color: "green" },
  emu: { legs: 2, color: "gray" },
};
Run Code Online (Sandbox Code Playgroud)

现在我想检索水生动物的嵌套对象(也称为“子数组”)。是否有标准的 JS/jQuery 构造或函数来按数组过滤对象属性(“按数组索引数组”),即:

var aquatic = zoo["fish", "turtle"];
Run Code Online (Sandbox Code Playgroud)

结果显然应该是{ { legs: 0, color: "yellow" }, { legs: 4, color: "green" } }

或者for循环是这里最简单的解决方案?

Nen*_*car 5

您可以使用map()并返回对象数组。

var zoo = {
  monkey: { legs: 4, color: "black" },
  fish: { legs: 0, color: "yellow" },
  turtle: { legs: 4, color: "green" },
  emu: { legs: 2, color: "gray" },
};
var aquatic = ["fish", "turtle"];

var result = aquatic.map(e => zoo[e]);
console.log(result)
Run Code Online (Sandbox Code Playgroud)

  • @evolutionxbox:没有“for”循环,但不要误会,“.map”仍然是一个循环。 (2认同)