我基本上有一個物件的陣列,有幾個屬性,但不是所有的物件都有相同的屬性。
const data = [
{
car: 12,
airplane: 42,
peoples: 2,
},
{
car: 12,
peoples: 2,
},
{
car: 12,
airplane: 42,
peoples: 2,
},
];
我想做的是應用一個filter()來過濾具有以下條件的物件。問題是,有一些物件缺少這些屬性,因此代碼最終會被破壞。在不破壞代碼的情況下,最好的方法是什么呢?
data.forEach((item) => item. airplane > 5)。)
uj5u.com熱心網友回復:
使用Array#filter:
const data = [ { car: 12, airplane: 42, peoples: 2 }, { car: 12, peoples: 2 }, { car: 12, airplane: 42, peoples: 2 }. ];
const res = data. filter(({ airplane }) => airplane & & airplane > 5) 。
console.log(res);
<iframe name="sif1" sandbox="allow-forms allow-modals allow-scripts" class="snippet-box-edit snippet-box-result" frameborder="0"></iframe>
uj5u.com熱心網友回復:
你在這里最簡潔的選擇是使用可選鏈(??)和nullish coalescing operator (??)--這兩者的結合允許你在鏈中某些屬性丟失時使用一些后退選項。 因此,你可以將你的回呼改寫為:
。
(item) => (item?.airplane ? 0) > 5?
在item.airplane被定義的情況下,你將得到預期的計算結果。 如果它不是/em>,它將回落到評估0 > 5。
uj5u.com熱心網友回復:
你需要使用filter(),你需要在你的過濾器邏輯上擴展一點,以檢查屬性 -
const result = data.filter((item) => /span> item。 airplane && item.airplane > 5)
uj5u.com熱心網友回復:
在你的函式中,你可以像這樣檢查該專案是否存在:
const result = data.filter(function(item) {
if (item.airplane) {
return item.airplane > 5;
} else {
return false;
}
});
這甚至可以在嚴格模式下作業。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/322410.html
標籤:
