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

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

一個對象轉為數組對象

一個對象轉為數組對象

炎炎設計 2019-03-13 13:15:40
預期:categories:{0: "語種", 1: "風格", 2: "場景", 3: "情感", 4: "主題"}轉為catlist= [{cat: "語種"}{cat: "風格"}{cat: "場景"}{cat: "情感"}{cat: "主題"}]實際for(let i in categories ){    catag.cat = categories[i];    catlist.push(catag);    console.log(catlist);             }catlist= [{cat: "主題"}{cat: "主題"}{cat: "主題"}{cat: "主題"}{cat: "主題"}]實在是不知道為什么,為什么循環(huán)數組push會更改前面push的值
查看完整描述

6 回答

?
哆啦的時光機

TA貢獻1779條經驗 獲得超6個贊

因為你這個catag沒有重新定義,都是指向同一個引用,你要在循環(huán)里面每次重新定義一個,或者直接push


for (let i in categories) {

  catlist.push({cat: categories[i]})

}


查看完整回答
反對 回復 2019-04-04
?
子衿沉夜

TA貢獻1828條經驗 獲得超3個贊

let categories={0: "語種", 1: "風格", 2: "場景", 3: "情感", 4: "主題"}, catlist=[]; Object.values(categories).map((item)=>{ catlist.push({cat:item}) })


查看完整回答
反對 回復 2019-04-04
?
蕪湖不蕪

TA貢獻1796條經驗 獲得超7個贊

catag 是一個對象,JS 中對象的互相賦值都是對值的引用,所以每次修改的項 都是 同一個項的值,導致了前面被覆蓋。


var a = {aa: 123};

var b = a;


b.aa = 456;

a // {aa: 456}


查看完整回答
反對 回復 2019-04-04
?
RISEBY

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

可以先淺拷貝一下


查看完整回答
反對 回復 2019-04-04
?
楊__羊羊

TA貢獻1943條經驗 獲得超7個贊

啊,你這樣寫 catag 我初一看,一位是系統(tǒng)內置,后來發(fā)現原來不是。js 里面經常會遇到這種問題,為什么我改動之后,按照邏輯不應該如此,為什么會發(fā)生一次改動,之前也被改動了呢?這個關鍵在于 js 的特性了,我也不是很懂,但知道這個原因就行。因為 你通過 push 將 catag 放入 catlist ,所以,你放的不是 catag 的值,而是 catag 這個對象,所以,你每次在改變 catag 的時候,并且又沒有重新定義它。所以在最后的時候你可以這樣看:`catag = ['cat':'教育'];
catlist = [catag,catag,catag,catag]`
就是這么個原因。解決方法有多個,一直接 push 對應應對參數結果?;蛘呦駱巧夏菢?,每次重定義 catag 變量。

查看完整回答
反對 回復 2019-04-04
  • 6 回答
  • 0 關注
  • 462 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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