我创建了一个功能强大的“深度”嵌套数组过滤功能。此功能显示分配了“红色”颜色的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>
发布于 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>
发布于 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>
https://stackoverflow.com/questions/51941263
复制相似问题