我有一組物件(汽車),我想從中只顯示“競爭”的汽車。
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
}
]
uj5u.com熱心網友回復:
首先,您根據類別對陣列進行排序,然后篩選出包含將要競爭的汽車的陣列
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]);
uj5u.com熱心網友回復:
這是一個帶有排序和過濾器的簡單解決方案
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
}
]
let result = cars.sort((a,b) => a.category - b.category)
.filter(car => car.competes && (cars.length && car.category == cars[0].category))
console.log(result)
uj5u.com熱心網友回復:
我們可以通過使用Math.min()Array.filter()獲得最低的競爭類別來開始獲得“競爭類別”
然后我們可以通過使用Array.filter()僅回傳具有competes真實值且也屬于競爭類別的汽車來獲取所有競爭汽車。
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 } ]
// Only this category is competing..
const competingCategory = Math.min(...cars.filter(car => car.competes).map(({category}) => category));
const competingCars = cars.filter(car => car.competes && car.category === competingCategory);
console.log('Competing cars:', competingCars)
.as-console-wrapper { max-height: 100% !important; top: 0; }
此示例僅存在類別 2 和 3:
const cars = [ { name: "blue", competes: true, category: 2 }, { name: "green", competes: true, category: 2 }, { name: "yellow", competes: true, category: 3 } ]
// Only this category is competing..
const competingCategory = Math.min(...cars.filter(car => car.competes).map(({category}) => category));
const competingCars = cars.filter(car => car.competes && car.category === competingCategory);
console.log('Competing cars (example II):', competingCars)
.as-console-wrapper { max-height: 100% !important; top: 0; }
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/359725.html
