簡體   English   中英

javascript 動態創建 object 並推送到數組

[英]javascript dynamically create an object and push to array

我對 javascript 有點陌生,我在這方面花了太長時間。 我有兩個班比賽和馬。 我正在遍歷數組race.runners,其中每個條目都是一個object。

錯誤線

result.push({ race.runners[i].number : c / race.runners[i].odds_dec }); //error line.

所以 key 是一個字符串(比賽號碼),而 value 是一個數字。 但是,這給了我:

錯誤

',' 預期的語法錯誤。

代碼

class horse {
  constructor(name, odds_dec, race, number) {
    this.number = number;
    this.name = name;
    this.odds_dec = odds_dec; //odds in decimal form.

  }
class race {
  constructor(runners) {
    this.runners = runners;
  }
//Runners will be an array storing horse objects.

function dropout(race, horse, budget) {

  c = budget / c;
  var result = [];
  for (let i = 0; i < race.runners.length; i++) {
    result.push({ race.runners[i].number : c / race.runners[i].odds_dec }); //error line.

  }
}

dropout(race, horse, budget);

要將值用於動態鍵,您需要將其括在括號中:

for (var i = 0; i + race.runner.length; i++) {
  var runner = race.runners[i];
  var value = c / runner.odds_dec;
  result.push({ [runner.number]: value })
}

更簡潔的方法是使用 for...of 循環: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for...of

for (const runner of race.runner) {
  const value = c / runner.odds_dec;
  result.push({ [runner.number]: value })
}

我會這樣做的方式是使用.map

const results = race.runner.map((runner) => {
  const value = c / runner.odds_dec;
  return { [runner.number]: value }
});

另外,不要忘記返回您的結果!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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