首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >JavaScript深度嵌套数组过滤

JavaScript深度嵌套数组过滤
EN

Stack Overflow用户
提问于 2018-08-21 11:43:26
回答 2查看 291关注 0票数 2

我创建了一个功能强大的“深度”嵌套数组过滤功能。此功能显示分配了“红色”颜色的car。然而,“通过”滤镜的汽车是汽车,它只有一种指定的颜色。

如何确保数组中的数组按照标准进行检查?我需要在循环中创建一个循环吗?期望的结果将是,如果条件设置为“红色”,它也将显示宝马和铃木,因为这些汽车也有这种颜色。

任何帮助,建议或其他帖子的进一步链接,以实现预期的结果,将非常感谢,因为我不能找到任何非常有用的我自己。最有用的帖子就是这个-- Filtering an array with a deeply nested array in JS

下面我附上了我当前代码的代码片段。

const myCars = [
    { name: "BMW",colour: ["White","Red","Black"] },
    { name: "AUDI",colour: ["Yellow","Silver"] },
    { name: "VW",colour: ["Purple","Gold"] },
    { name: "NISSAN",colour: ["White","Black"] },
    { name: "SUZUKI",colour: ["Red"] }, 
];

for (x in myCars) {
  var keys = Object.keys(myCars[x])

  var carSpec = myCars.filter(function(fltr) {
    return (fltr.colour == "Red");

  });
  document.getElementById("show1").innerHTML += carSpec[x].name + " " + "has these colours - " + carSpec[x].colour + "<hr />";
}
<p>Car List.</p>

<p id="show"></p>
<p id="show1"></p>

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-08-21 11:45:58

您需要通过colour阵列上的includes测试执行filter

const myCars = [
    { name: "BMW",colour: ["White","Red","Black"] },
    { name: "AUDI",colour: ["Yellow","Silver"] },
    { name: "VW",colour: ["Purple","Gold"] },
    { name: "NISSAN",colour: ["White","Black"] },
    { name: "SUZUKI",colour: ["Red"] }, 
];
const show1 = document.getElementById("show1");
myCars
  .filter(({ colour }) => colour.includes('Red'))
  .forEach(({ name, colour }) => {
    show1.innerHTML += name + " " + "has these colours - " + colour + "<hr />";
  });
<p>Car List.</p>

<p id="show"></p>
<p id="show1"></p>

票数 5
EN

Stack Overflow用户

发布于 2018-08-21 12:01:51

您可以使用reduce获取红色可用汽车的数组,然后使用forEach循环遍历它并显示文本。

join将通过分隔符联接数组的所有内容

const myCars = [{
    name: "BMW",
    colour: ["White", "Red", "Black"]
  },
  {
    name: "AUDI",
    colour: ["Yellow", "Silver"]
  },
  {
    name: "VW",
    colour: ["Purple", "Gold"]
  },
  {
    name: "NISSAN",
    colour: ["White", "Black"]
  },
  {
    name: "SUZUKI",
    colour: ["Red"]
  },

];


let hasRed = myCars.reduce(function(acc, curr) {
  if (curr.colour.indexOf('Red') !== -1) {
    acc.push(curr)
  }
  return acc;

}, []).forEach((item) => {
  document.getElementById("show1").innerHTML += item.name + " " + "has these colours - " + item.colour.join(',') + "<hr />";
})
<p>Car List.</p>

<p id="show"></p>
<p id="show1"></p>

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51941263

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档