我试图使用push method
将数据附加到Array
中。我通过json file
获得了数组,我已经通过fs.readFileSynch
读取了该数组,然后使用JSON.parse()
方法将该数据转换为对象。下面是我的代码进行更多解释:
let data = fs.readFileSync("my_jsonfile_here"),(err)=>{
if(err) return console.log(err);
});
data = JSON.parse( data.toString() ); // convert it to object
let appendDATA = data.push({name:"zadi"}) ; //adding data
console.log(appendDATA) // return number why ????????????
// I was expecting this [{name:"donald"},{name:"zadi"}] as a result
我的json文件是这样的:
[
{"name":"donald"}
]
数组。Push会修改数组,但不会返回你想要的结果。
只使用:
data.push({name:"zadi"});
console.log(data)
如果您检查Array.push
文档,该方法将返回push record后数组的长度
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/push return_value
提示:在我看来最好使用回调或承诺读取文件
const fsAsync = require('fs/promises');
(async () => {
try {
const body = await fsAsync.readFile('my_jsonfile_here');
const data = JSON.parse(body.toString());
const length = data.push({ name: 'zadi' });
console.log('length', length);
console.log('data', data);
} catch (error) {
console.error(error);
}
})();
// Or use callback
const fs = require('fs');
fs.readFile('my_jsonfile_here', (error, body) => {
if (error) {
console.error(error);
return;
}
const data = JSON.parse(body.toString());
const length = data.push({ name: 'zadi' });
console.log('length', length);
console.log('data', data);
});