使用拼接删除 JSON 对象无处可去 - 那么我如何删除一大块数据?
Posted
技术标签:
【中文标题】使用拼接删除 JSON 对象无处可去 - 那么我如何删除一大块数据?【英文标题】:Removal of JSON Object with splice leads nowhere - How do i delete a chunk of data then? 【发布时间】:2021-01-24 18:04:21 【问题描述】:首先,我想说**我已经研究了一些与此相关的不同主题。**如果不是 100 个和几个 youtube 视频。
在过去的几个小时里,我一直在坚持。
我有一个这样的 .json 文件:
"PlayerData": [
"steamId": "76561193436459",
"playerName": "x",
"banReason": "x",
]
等等 - 你从数组中得到想法。
我一直在摆弄不同类型的 javascript 代码,例如 forEach() & (let i > 0 = banPlayerData.length i++) 类型的代码,以及尝试使用 splice 方法来剪切出这个对象元素。
我想要实现的是,根据您输入的 Steam ID,它将删除该 Steam ID 周围的整个块/对象。
因此,如果我在这种情况下为 steamid2
输入以下内容765611934365823
据说它会删除这整个位。:
"steamId": "765611934365823",
"playerName": "f",
"banReason": "f",
,
但是,在尝试多次使用 .splice(i, 1) 之后 - 我的 JSON 文件没有任何变化。 我最近尝试的代码示例:
Test: async function (message, server, steamid2)
try
const data = fse.readJsonSync(serverSettings + "Bans.json")
for (var i = 0; i < data.bannedPlayerData.length; i++)
//splice(i, 1)
catch (error)
console.error(error)
,
知道出了什么问题吗?它进入了 console.log 所在的位置——它实际上并没有使用命令打印任何错误;我的 JSON 文件中没有简单的结构变化,也没有发生任何变化。
我一直在寻找使用 splice 的 npm 替代方法,甚至是删除方法……但这里我们谈论的是一个可能包含数千个数据的文件(目前它是 3 个示例)-我有点想避免删除 XXX 代码,因为听说删除后会留下空格;这可能会导致损坏我的 JSON 文件。
【问题讨论】:
在再次阅读后,如果您希望更改反映在文件中,则必须写入该文件 @aRvi 这是否意味着我应该首先加载数据(它确实如此) - 拼接出我想要的位(文件中尚未看到任何更改) - 从这里要么只使用保存有或没有通过数组传回的新数据的文件? .. 或者文件只是在保存后会注意到 splice 的更改? 你需要在for循环后使用fse.writeJsonSync
另外,您可以将整个 for
循环替换为:data.bannedPlayerData.splice(data.bannedPlayerData.findIndex((u) => u.steamId === steamid2), 1)
等我几个小时后回到电脑前,让我在这里介绍一下这两个想法 - 我会在几个小时后报告......非常感谢快速提示!跨度>
【参考方案1】:
我混合了来自 Lioness100 和 aRvi 的两个答案
在做
data.bannedPlayerData.splice(data.bannedPlayerData.findIndex((u) => u.steamId === steamid2), 1)
根据需要拼接/拆分数据。之后通过fse.writeJsonSync
保存文件帮助我取得了预期的结果。
两个答案都作为 cmets 发布到我的帖子中,而不是作为直接答案 - 因此我无法为它们都提供绿色复选标记。
【讨论】:
以上是关于使用拼接删除 JSON 对象无处可去 - 那么我如何删除一大块数据?的主要内容,如果未能解决你的问题,请参考以下文章
Backbone.js PushState 路由 .htaccess 仅作为散列工作,但无处可去