6 回答

TA貢獻1779條經驗 獲得超6個贊
因為你這個catag沒有重新定義,都是指向同一個引用,你要在循環(huán)里面每次重新定義一個,或者直接push
for (let i in categories) {
catlist.push({cat: categories[i]})
}

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

TA貢獻1796條經驗 獲得超7個贊
catag 是一個對象,JS 中對象的互相賦值都是對值的引用,所以每次修改的項 都是 同一個項的值,導致了前面被覆蓋。
var a = {aa: 123};
var b = a;
b.aa = 456;
a // {aa: 456}

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 變量。
添加回答
舉報