使用拼接移除JSON对象无济于事-那我该如何删除大块数据呢?

问题描述

首先,我要说的是**我研究了与此相关的一些不同主题。**如果不是100个和几个youtube视频。

我已经呆了好几个小时了。

我有一个结构如下的.json文件

    {
        "PlayerData": [
            {
                "steamId": "76561193436459","playerName": "x","banReason": "x",}
    
        ]
    }

以此类推-您可以从数组中获得想法。

我一直在研究不同类型的Javascript代码,例如forEach()&(让i> 0 = bannedplayerData.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文件中没有简单的结构更改,也没有更改。

我一直在寻找用于拼接的npm替代方法,甚至删除方法都花了好几个小时。但是在这里,我们谈论的是一个文件,它可能具有成千上万的数据(目前是3的示例)-而且我还想避免删除XXX代码,因为听说它在删除后会留下空白;这可能会导致我的JSON文件损坏。

解决方法

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

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

根据需要拼接/分割数据。之后通过fse.writeJsonSync保存文件有助于我成功达到预期效果。

这两个答案都是作为我的帖子的评论发布的,而不是直接答案-因此,我无法同时为他们提供绿色的复选标记。