我試圖從修改后的物件中創建一個陣列,但該Array<any>.push()方法總是附加在回圈結束時被修改的物件。這是我嘗試使用的示例代碼:
let data: any = JSON.parse('{"messages":[{"id":"1234"},{"id":"2345"},{"id":"3456"}]}');
let myObject:any;
let idMapping: any[] = [];
for(let index = 0; index < 1; index ) {
myObject = {DocID: "", index: index};
for (let val of data.messages) {
myObject.DocID = val.id;
// console.log("After update: ", myObject); // this gives me the correct object
idMapping.push(myObject);
}
}
console.log(idMapping) // array with same identical values, infact the last modified value in for loop
這給了我一個相同物件的串列,我期望它是一個具有不同DocID.
我是 typescript 和 Nodejs 的新手,所以任何幫助將不勝感激。
uj5u.com熱心網友回復:
您一遍又一遍地修改和添加相同的物件到陣列中!
相反,您應該每次迭代都創建一個新物件:
let data: any = JSON.parse('{"messages":[{"id":"1234"},{"id":"2345"},{"id":"3456"}]}');
let idMapping: any[] = [];
for(let index = 0; index < 1; index ) {
for (let val of data.messages) {
let myObject = {DocID: "", index: index};
myObject.DocID = val.id;
// console.log("After update: ", myObject); // this gives me the correct object
idMapping.push(myObject);
}
}
console.log(idMapping)
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/324145.html
標籤:javascript 节点.js 数组 打字稿
