簡體   English   中英

刪除/更新 node.js 中的 JSON 鍵

[英]Remove/Update JSON key in node.js

我正在嘗試更新或刪除(然后重寫)node.js 中的 JSON 密鑰

JSON:

{"users":[{"Discordid":"discid","Username":"user","Password":"pass","School":"schoolname"}, {"Discordid":"discid1","Username":"user1","Password":"pass1","School":"schoolname1"}]}

我想通過for 循環刪除整個{"Discordid":"discid","Username":"user","Password":"pass","School":"schoolname"}所以我使用變量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]

和其他一切都不起作用的事情。

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] = {.....}

關於是要刪除密鑰還是要刪除整個 object,問題尚不清楚。 假設要從數組users中刪除整個元素,可以使用splice 方法

首先使用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]

如果這不是您想要實現的,請編輯問題以添加更多信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM