免責宣告:請不要介意我愚蠢的物件名稱,它只是為了學習基礎知識
我有一組名為“汽車”的物件:
const cars = [
{
name: "red",
competes: true,
category: 2,
given: 400
},
{
name: "blue",
competes: false,
category: 2,
given: 0
},
{
name: "green",
competes: true,
category: 2,
given: 0
}
]
另一個名為 addOns 的物件陣列:
const addOns = [
{
name: "hyperblast",
upgrade: 100
},
{
name: "catalyst",
upgrade: 400
}
]
題
例如,我如何將 addOn {name: "catalyst", upgrade: 400} 添加到名為“green”的汽車?
我試過
cars[2].push(addOns[1]);
但它不起作用。我所有的谷歌搜索都沒有結果(物件陣列似乎很重要,但我經常找不到任何相關的東西。只關于陣列或物件,從來沒有在一起)
uj5u.com熱心網友回復:
您可以將插件添加為汽車物件的另一個欄位。對于您的示例:cars[2].extra = addOns[0];。輸入后,如果您嘗試控制汽車 [2],您將看到:
{
name: 'green',
competes: true,
category: 2,
given: 0,
extra: { name: 'hyperblast', upgrade: 100 }
}
由于您正在使用 vanilla Js,這cars[0].extra將起作用,但是如果您將來使用 TS,最好在添加欄位之前定義一個欄位,或者完全更改腳本的結構
uj5u.com熱心網友回復:
由于汽車和插件都有屬性鍵“name”,我會將第二個更改為“addOnName”或類似的東西。否則,結果中的 'green' 將被覆寫為 'hyperblast'。
由于您正在嘗試向物件添加多個屬性,因此您應該使用 for...in 回圈。正如你在下面看到的,我用一個常規的 for 回圈遍歷了汽車陣列。如果給定汽車的名稱是“綠色”,我將呼叫 addProps 函式并將給定汽車物件作為引數傳遞給它。然后將您選擇的 addOns 物件中的每個道具添加到給定的汽車物件上。
const addProps = (obj) => {
for (let prop in addOns[0]) {
obj[prop] = addOns[0][prop];
}
}
for (let i = 0; i < cars.length; i ) {
if (cars[i].name === 'green') {
addProps(cars[i]);
}
}
console.log(cars);
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/361232.html
標籤:javascript 数组 目的 推
下一篇:為元素觸發D3事件
