我正在嘗試將forloop寫入json文件,它只打印數組中的最后一項
let rawdata = fs.readFileSync('./input_data.json');
let jsondata = JSON.parse(rawdata);
let result='';
let key='';
let data = {
items: []
}
myrecords=[];
for(let i = 0; i < jsondata.records.length; i++) {
let obj = jsondata.records[i];
result = obj.Id
items = jsondata.records[i].data
data.items = [items];
data.key=result
myrecords.push(data)
}
var log_file = fs.createWriteStream(__dirname + '/output.json', {flags : 'w'});
var log_stdout = process.stdout;
console.log = function(d) {
log_file.write(util.format(d) + '\n');
log_stdout.write(util.format(d) + '\n');
};
console.log(JSON.stringify(myrecords, null, 2))
您在循環中一次又一次地使用同一個
data
對象,并將引用推送到myrecords
中。因此,myrecords
中的所有元素都引用了相同的data
對象。修改循環中的對象時,它會影響以前添加的所有項。您應該在循環的每次迭代中創建一個新的
data
對象。請嘗試以下操作: