第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用 Javascript 如何將作為函數(shù)/方法參數(shù)的數(shù)組添加到對象數(shù)組?

使用 Javascript 如何將作為函數(shù)/方法參數(shù)的數(shù)組添加到對象數(shù)組?

牧羊人nacy 2023-05-11 16:47:52
我正在嘗試將作為參數(shù)傳遞給 Javascript 類方法的數(shù)組與也在該方法中創(chuàng)建的對象數(shù)組進行匹配。例如,這是一個傳遞的數(shù)組:colorSet = ["red","orange","purple","yellow"]當此數(shù)組在下面稱為 addColors 的方法中傳遞時,我需要創(chuàng)建一個對象并根據(jù) colorSet 的長度將該對象推送到一個空數(shù)組。這很簡單。 addColors(colorSet) {  let obj = {}  for (let i = 0;i<colorSet.length;i++){   this.legend.push(obj)  }但是,在這樣做之后,我嘗試在同一個 for 循環(huán)中將對象鍵“color”添加到對象數(shù)組并將其值設置為 colorSet 中的顏色數(shù)組。見下文: addColors(colorSet) {  let obj = {}  for (let i = 0;i<colorSet.length;i++){    this.legend.push(obj)    this.legend[i].color = colorSet[i]  }然而,結果如下:0: Object { color: "yellow" }1: Object { color: "yellow" }2: Object { color: "yellow" }3: Object { color: "yellow" }我想要的是這樣的:0: Object { color: "red" }1: Object { color: "orange" }2: Object { color: "purple" }3: Object { color: "yellow" }對此的任何幫助將不勝感激。
查看完整描述

4 回答

?
拉丁的傳說

TA貢獻1789條經(jīng)驗 獲得超8個贊

這是一個常見問題。您正在改變對象legend[i]- 但是對于所有索引,這i是對同一對象的引用obj,結果是改變?nèi)魏我粋€都會改變它們。


解決方案:每次簡單地推送一個全新的對象,不改變?nèi)魏螙|西:


addColors(colorSet) {

  for (let i = 0;i<colorSet.length;i++){

    this.legend.push({ color: colorSet[i]});

  }

}

事實上,您可以通過刪除循環(huán)并僅使用map方法和剩余參數(shù)來簡化此過程:


addColors(colorSet) {

  this.legend.push(...colorSet.map(color => ({ color })))

}


查看完整回答
反對 回復 2023-05-11
?
慕村225694

TA貢獻1880條經(jīng)驗 獲得超4個贊

問題是你有l(wèi)et obj = {};一條線在循環(huán)之外for,并且所有被推送到的項目都引用了同一個對象legend。將其移入 for 循環(huán)以解決此問題:


var legend = [];


function addColors(colorSet) {

  for (let i = 0; i < colorSet.length; i++) {

    let obj = {}; // <- new object should be defined here

    legend.push(obj);

    legend[i].color = colorSet[i];

  }

}


addColors(["red", "orange", "purple", "yellow"]);

console.log(legend);


查看完整回答
反對 回復 2023-05-11
?
函數(shù)式編程

TA貢獻1807條經(jīng)驗 獲得超9個贊

您可以直接在循環(huán)中創(chuàng)建對象。


鏈接這個。


function addColors(colorSet) {

  const legends = [];

  for (let i = 0;i<colorSet.length;i++){

  const obj = {

    color: colorSet[i]

  }

   legends.push(obj)

  }

  

  console.log(legends)

  

 }


const colorSet = ["red","orange","purple","yellow"];



addColors(colorSet);


查看完整回答
反對 回復 2023-05-11
?
哆啦的時光機

TA貢獻1779條經(jīng)驗 獲得超6個贊

在 上addColors,問題是您將obj變量推入 for 循環(huán)。在 上legend.push(obj),它推送obj變量的引用,而不是 的值,obj因此所有變量都設置為last-index值。


const colorSet = ["red", "orange", "purple", "yellow"];


function addColors(colorSet) {

  const legend = [];

  for (let i = 0;i< colorSet.length; i++) {

    legend.push({}); // - Here, instead of pushing `obj`, push initial value `{}`

    legend[i].color = colorSet[i];

  }

  

  console.log(legend);

}


addColors(colorSet);


簡單地說,這可以使用Array.prototype.map來完成


const colorSet = ["red","orange","purple","yellow"];


const result = colorSet.map((item) => ({ color: item }));

console.log(result);


查看完整回答
反對 回復 2023-05-11
  • 4 回答
  • 0 關注
  • 198 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號