亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

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

從一個對象數組中選擇項目并將其存儲在另一個對象中

從一個對象數組中選擇項目并將其存儲在另一個對象中

慕后森 2023-07-06 10:04:25
挑戰我正在嘗試從對象 A 中選擇項目的子集以將其存儲在對象 B 中。這似乎是一個非常簡單的任務,但由于某種原因,結果不是我所期望的。我從對象 A 中選擇 1 項,并希望將其存儲在對象 B 的特定索引中:fselection.categories[cindex].name = categories[cindex].name;然而,從對象 A 中選擇的項目存儲在對象 B 的每個索引中,而不僅僅是存儲在cindex. 參見下文 MWE。我試圖通過編寫一個普通的舊 for 循環來解決這個問題,但這也不能解決它。更重要的是,這一次,對象 A 的每個位置都填充了空字符串?for(i=0;i<fselection.categories.length;i++){    console.log(i);    if(i === cindex){        fselection.categories[i].name = categories[i].name;    } else {        fselection.categories[i].name = "";    }}很奇怪,不是嗎?預期結果預期結果是填充fselection.categories[i].name1 個元素categories,即fselection.categories[i].name一流量是多少?加載頁面打開控制臺 - 它將向您顯示實例化的對象數組點擊頁面上的按鈕即可在控制臺查看結果
查看完整描述

1 回答

?
POPMUISE

TA貢獻1765條經驗 獲得超5個贊

在您的代碼片段中,您使用以下代碼填充 fselection.categories:


var initcat = JSON.parse('{ "name": "", "subcategories": [] }');

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

    fselection.categories.push(initcat);

}

結果是 fselection.categories 的每個元素都是對同一對象 (initcat) 的引用。如果您更改該對象的屬性,它將看起來“到處都在改變”。如果你做的事情更像是:


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

    fselection.categories.push(JSON.parse('{ "name": "", "subcategories": [] }'));

}

那么每個元素將是一個獨立的對象,因此可以獨立更改。


查看完整回答
反對 回復 2023-07-06
  • 1 回答
  • 0 關注
  • 102 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號