gpt4 book ai didi

javascript - 删除 JSON 数组中特定索引的对象,不留下 "null"(Node.js)

转载 作者:行者123 更新时间:2023-12-01 01:33:42 25 4
gpt4 key购买 nike

我在路径 static/json/test.json 下有一个本地 JSON 文件。其内容为[{"id": 12}, {"id": 44}]。我想读取它,从中删除索引 i 的对象并重写文件,例如,如果 i = 0 新内容应该是 [{ “id”:44}]

到目前为止我已经尝试过:

let i = 0;

fs.readFile("static/json/test.json", "utf8", function(err, data) {
let obj = JSON.parse(data); // obj is now [{"id": 12}, {"id": 44}]
delete obj[i];
fs.writeFile("static/json/test.json", JSON.stringify(obj), "utf8");
// test.json should now be [{"id": 44}], but its [null, {"id": 44}]
});

如果我这样做,test.json 的内容不是 [{"id": 44}],而是 [null, {"id": 44}].

我读过有关使用 obj.splice(i, 1); 而不是 delete obj[i]; 的内容,但由于某种原因,它没有做任何事情,我没有收到任何错误。

如何删除此 JSON 数组的索引 i 的对象而不留下 null

编辑:

感谢您的快速答复!通常 obj.splice(i, 1); 应该可以工作,但它不适合我的原因与我的设置有关。对我来说有效的答案是

let i = 0;

fs.readFile("static/json/test.json", "utf8", function(err, data) {
let obj = JSON.parse(data); // obj is now [{"id": 12}, {"id": 44}]

delete obj[i];
obj = obj.filter(item => item);

fs.writeFile("static/json/test.json", JSON.stringify(obj), "utf8");
// test.json is now [{"id": 44}]
});

最佳答案

您可以执行删除并过滤掉未定义

const obj= [{"id": 12}, {"id": 44}]
delete obj[0];
console.log(obj.filter(item => item));

但是 splice() 工作正常

const obj= [{"id": 12}, {"id": 44}]
obj.splice(0, 1);
console.log(obj);

关于javascript - 删除 JSON 数组中特定索引的对象,不留下 "null"(Node.js),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53023445/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com