push方法转换后在nodejs中不起作用



我试图使用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);
});

最新更新