簡體   English   中英

根據 JavaScript 中重復出現的屬性名稱增加 object 中的屬性值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM