JavaScript深度嵌套数组过滤

Rhi*_*ian 2 javascript arrays



我创建了某种功能“深度”嵌套数组过滤功能。此功能显示汽车,并为其分配了颜色“红色”。但是,“通过”过滤器的汽车是仅分配了1种颜色的汽车。
如何确保条件检查阵列中的阵列?我是否需要在循环内创建循环?理想的结果是,如果将标准设置为“红色”,由于这些汽车也具有此颜色,因此还将显示BMW和SUZUKI。

由于我自己找不到任何非常有用的东西,因此对获得任何帮助,建议或与其他职位的进一步链接以取得理想的结果将不胜感激。帖子,

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

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 />";
}
Run Code Online (Sandbox Code Playgroud)
<p>Car List.</p>

<p id="show"></p>
<p id="show1"></p>
Run Code Online (Sandbox Code Playgroud)

Cer*_*nce 5

您需要filter通过includescolour阵列的测试:

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 />";
  });
Run Code Online (Sandbox Code Playgroud)
<p>Car List.</p>

<p id="show"></p>
<p id="show1"></p>
Run Code Online (Sandbox Code Playgroud)