JS 原生 push物件到陣列中遇到的問題

2022-09-05 14:00:16 字數 1134 閱讀 4720

在做小程式開發時,需要將乙個物件push到陣列中,第一次寫法是

for(var j in that.data.goods );//定義乙個接受物件

console.log(that.data.goods[j].id)//

獲取了所選商品的id值

console.log(that.data.cart.list[h])//

獲取了所選商品的數量

that.data.cartgoods=that.data.goods[j].id;

that.data.cartgoods =that.data.cart.list[h];

//var aa = that.data.cartgoods

goods.push(that.data.cartgoods);//

新增陣列資訊

} }

這樣輸出的結果你陣列元素都是最後乙個物件。因為tmp宣告在for迴圈之外,當listdata陣列push這個tmp物件時,一直是同乙個物件,而並不是將物件的資料壓入,只是在listdata陣列建立了乙個物件的引用關係。故隨著for的i值改變,tmp物件內部的內容也跟著改變,而listdata壓入的物件卻始終是tmp這個物件(tmp生命週期不受for迴圈影響)。所以最終console.log(listdata)出來的物件陣列裡面的元素都是一樣的資料。簡言之:就是tmp物件的資料再變,但是listdata壓入的tmp卻是不變的。

需要在裡面定義乙個接受陣列

for(var j in that.data.goods );//

定義乙個接受物件

console.log(that.data.goods[j].id)//

獲取了所選商品的id值

console.log(that.data.cart.list[h])//

獲取了所選商品的數量

goods_id_list.id=that.data.goods[j].id;

goods_id_list.num =that.data.cart.list[h];

//var aa = that.data.cartgoods

goods.push(goods_id_list);//

新增陣列資訊

} }

}

JS 陣列中push物件,覆蓋問題

發現將物件push進陣列,後面的值會覆蓋前面的值,最後輸出的都是最後一次的值。其實這一切都是引用資料型別惹的禍。如果你也有類似問題,可以繼續看下去哦。下面 模擬 將json物件的每個鍵值對,單獨搞成物件,再賦值給陣列,最後輸出陣列。結果陣列應該是有三個物件。for in用於物件遍歷 12 3456 ...

js中 類陣列物件

類陣列物件首先是個物件,非null,非undefined,另外該物件長度 小於2 32 有限。可以對照 理解一下它的含義 假設obj是乙個類陣列物件 obj typeof obj object n非null,undefined,且是物件 isfinite obj.length 長度有限,且為非負值,...

迴圈給陣列push物件,陣列中只有最後乙個物件

let list let list1 let data for var i 0 i list1.length i 上面這種情況下不管在迴圈外還是迴圈內給list push值,list裡只會有乙個物件。因為data只有乙個,所以 list 只能接到乙個 只要把data寫在迴圈內再給list push值...