[英]Incrementing property value in an object based on reoccurring property name in JavaScript
我遇到了值遞增的問題,該值在 object 內部,我需要遞增它。 我正在向 Object 添加新的屬性和值,並且我正在使用 for 循環。 我正在通過 if/else 語句添加新的屬性和值。
這是我在此作業中使用的數據。
const game = {
team1: 'Bayern Munich',
team2: 'Borrussia Dortmund',
players: [
[
'Neuer',
'Pavard',
'Martinez',
'Alaba',
'Davies',
'Kimmich',
'Goretzka',
'Coman',
'Muller',
'Gnarby',
'Lewandowski',
],
[
'Burki',
'Schulz',
'Hummels',
'Akanji',
'Hakimi',
'Weigl',
'Witsel',
'Hazard',
'Brandt',
'Sancho',
'Gotze',
],
],
score: '4:0',
scored: ['Lewandowski', 'Gnarby', 'Lewandowski', 'Hummels'],
date: 'Nov 9th, 2037',
odds: {
team1: 1.33,
x: 3.25,
team2: 6.5,
},
}
這是我正在嘗試處理此數據的 for 循環,以進行澄清:我正在嘗試將具有值的新屬性注入到空的 Object 中。
for (var i = 0; i < game.scored.length; i++){
if(!(`${game.scored[i]}` in scorers)){
Object.defineProperty(scorers, `${game.scored[i]}`,{
value:1
})}
else if(`${game.scored[i]}` in scorers){
scorers[game.scored[i]]++
}
else{
scorers[game.scored[i]]=1
}
}
console.log(scorers)
您的問題是Object.defineProperty
方法配置不正確。 第三個參數, descriptor
,有一個writable
的key,它決定了值是否可以改變(默認為false)。 也就是說,通常最好使用以下符號將新的鍵/值對分配給 object: object[key]=value
所以你的特定代碼塊可以重寫為
if(.(`${game.scored[i]}` in scorers)){ scorers[game.scored[i]] = 1 }
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.