遍歷陣列賦值給物件失敗,取到的都是最後一項的值

2021-09-24 19:55:18 字數 1401 閱讀 6974

現有物件陣列list後,要取出每一項有用的屬性,形成新陣列

例如:

// ... 已獲得的陣列 list ,假設為以下值

let list =[,

];// 期望輸出值

result =[,

];

使用如下**:

let result =

, item =

;list.

foreach

( el =>

)console.

log(result)

;// [ , ];

得到的總是最後一組的物件的值。

一句話 :因為item是指向物件的指標。

每次pushresult之後,儲存的都是這個引用,迴圈遍歷完陣列後,每個item指向的都是同乙個物件。**如下:

ⅰ.既然問題**是指標,那直接不出現指標了

list.

foreach

( el =>);

})console.

log(result)

;// [ , ];

list.

foreach

( el =>

;// 或者 var item = {};

item.a = el.a;

item.b = el.b;

result.

push

(item);}

)console.

log(result)

;// [ , ];

let item =

;list.

foreach

( el =>

, item));

})console.

log(result)

;// [ , ];

上面兩種行為的原理是一樣的,每次遍歷都重新建立了乙個物件,上乙個也不會被改變了

let item =

;list.

foreach

( el =>

; item.a = el.a;

item.b = el.b;

result.

push

(item);}

)console.

log(result)

;// [ , ];

遍歷陣列,遍歷物件的方法

遍歷陣列 方法1 for 迴圈 使用臨時變數將陣列長度快取起來,避免重複獲取陣列長度 for var i 0,leng arr.length i leng i 方法2 foreach迴圈 遍歷陣列中的每一項,沒有返回值,對原陣列沒有影響,不支援ie arr.foreach item,index,ar...

Java遍歷陣列物件的方式

下面討論 不做解釋 要明白編寫的 在電腦中是怎麼儲存的。以本 為例 首先你要知道你執行例項 例如stu 0 new student 張三 18 這樣是在 堆空間裡面建立乙個 student 空間裡面存放各種屬性,而 stu 0 儲存的是指向這個空間的 乙個位址 所以遍歷出來就是這個位址 又如stud...

js遍歷陣列和物件的方法

第二條鏈結裡有分析不同遍歷方式的效率 var arr name age var obj for in遍歷陣列和和物件 for key in obj foreach遍歷陣列,三個引數依次是陣列元素 索引 陣列本身 arr.foreach function value,index,array 返回乙個陣...