为了账号安全,请及时绑定邮箱和手机立即绑定

删除/更新 node.js 中的 JSON 键

删除/更新 node.js 中的 JSON 键

翻过高山走不出你 2022-06-16 14:38:25
我正在尝试更新或删除(然后重写)node.js 中的 JSON 密钥JSON:{"users":[{"Discordid":"discid","Username":"user","Password":"pass","School":"schoolname"}, {"Discordid":"discid1","Username":"user1","Password":"pass1","School":"schoolname1"}]}我想{"Discordid":"discid","Username":"user","Password":"pass","School":"schoolname"} 通过for 循环删除整个内容,因此我使用变量,该变量a等于我要删除的数据的数量。我努力了:fs.readFile('databases/magistercredentials.json', 'utf-8', function (err, data1) {     if (err) throw err     var magistercreds = JSON.parse(data1)     for (a = 0; a < Object.keys(magistercreds.users).length; a++) delete magistercreds.users[a]和其他一切都不起作用的事情。
查看完整描述

2 回答

?
斯蒂芬大帝

TA贡献1827条经验 获得超8个赞

fs.readFile('databases/magistercredentials.json', 'utf-8', function (err, data1) {

     if (err) throw err

     var magistercreds = JSON.parse(data1)

     for (a = 0; a < magistercreds.users.length; a++){

          magistercreds.users.splice( a, 1 );

          a--; // to step back, as we removed an item, and indexes are shifted

     }

但可能你只想更新,所以你可以让它变得简单:


fs.readFile('databases/magistercredentials.json', 'utf-8', function (err, data1) {

     if (err) throw err

     var magistercreds = JSON.parse(data1)

     magistercreds.users[68468] = {.....}


查看完整回答
反对 回复 2022-06-16
?
一只甜甜圈

TA贡献1836条经验 获得超5个赞

关于是要删除键还是要删除整个对象的问题尚不清楚。假设要从数组中删除整个元素users,可以使用拼接方法。


首先使用 找到要删除的元素的索引findIndex。然后您可以使用splice就地修改数组。


样本:


fs.readFile('databases/magistercredentials.json', 'utf-8', function (err, data1) {

     if (err) throw err

     var magistercreds = JSON.parse(data1)

     // Assuming you want to delete the element which has the Discordid property as "discid"

     var indexOfElement = magistercreds.findIndex(el => el.Discordid === "discid")

     magistercreds.users.splice(indexOfElement, 1) // This will remove 1 element from the index "indexOfElement" 

}

此外,不需要使用Object.keys来迭代数组。原始问题中的 for 循环可以重写为:


for (a = 0; a < magistercreds.users.length; a++) delete magistercreds.users[a]

如果这不是您想要实现的,请编辑问题以添加更多信息。


查看完整回答
反对 回复 2022-06-16
  • 2 回答
  • 0 关注
  • 243 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号