使用拼接删除 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) =&gt; u.steamId === steamid2), 1) 等我几个小时后回到电脑前,让我在这里介绍一下这两个想法 - 我会在几个小时后报告......非常感谢快速提示!跨度> 【参考方案1】:

我混合了来自 Lioness100 和 aRvi 的两个答案

在做

data.bannedPlayerData.splice(data.bannedPlayerData.findIndex((u) => u.steamId === steamid2), 1)

根据需要拼接/拆分数据。之后通过fse.writeJsonSync 保存文件帮助我取得了预期的结果。

两个答案都作为 cmets 发布到我的帖子中,而不是作为直接答案 - 因此我无法为它们都提供绿色复选标记。

【讨论】:

以上是关于使用拼接删除 JSON 对象无处可去 - 那么我如何删除一大块数据?的主要内容,如果未能解决你的问题,请参考以下文章

iPhone托管对象删除崩溃

Backbone.js PushState 路由 .htaccess 仅作为散列工作,但无处可去

从 JSON 数组拼接或删除元素列表

从 JSON 数组拼接或删除元素列表,仅删除偶数项而不是匹配项

无法拼接对象数组中的项目

使用拼接反应本机从数组中删除对象元素