我有一系列对象(汽车),我想从中仅显示“竞争”的汽车。
const cars = [
{
name: "red",
competes: true,
category: 1
},
{
name: "blue",
competes: false,
category: 1
},
{
name: "green",
competes: true,
category: 2
},
{
name: "yellow",
competes: true,
category: 3
}
]
但是从那些参加比赛的汽车中,我只想显示那些属于第一类的汽车,这对于 for 循环来说很好。
这些对象现在是静态的,但由于我想在第二时刻更改它们,我需要一个代码来检查汽车是否竞争,然后检查“类别”一中是否有汽车。
- 如果“类别 1”中有汽车,请列出它们
- 如果“类别”1 中没有汽车,请列出“类别”2 中的汽车(但不是 3)
- 等等
我的尝试是在循环中使用一个循环,但由于它多次显示而不起作用
for (let i = 0; i < cars.length; i++) {
if (cars[i].competes === false) continue;
for (let f = 0; f < cars.length; f++) {
if (cars[f].category > 1) break;
console.log(`Cat1: ${cars[f].name}`);
}
}
如果“汽车”内的“类别”属性全部是 2 个或更多,如何解决这个问题?
const cars = [
{
name: "red",
competes: true,
category: 2
},
{
name: "blue",
competes: false,
category: 2
},
{
name: "green",
competes: true,
category: 3
},
{
name: "yellow",
competes: true,
category: 4
}
]
最佳答案
首先,根据类别对数组进行排序,然后过滤出包含要竞争的汽车的数组
const cars = [
{
name: "red",
competes: true,
category: 1
},
{
name: "blue",
competes: false,
category: 1
},
{
name: "green",
competes: true,
category: 2
},
{
name: "yellow",
competes: true,
category: 3
}
]
const sorted = cars.sort((a, b) => a.category - b.category);
const compete = sorted.filter(x => x.competes && x.category == sorted[0].category);
console.log(compete[0]);
关于javascript - JS : Loop with multiple conditions,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70004899/