问题描述
首先,我要说的是**我研究了与此相关的一些不同主题。**如果不是100个和几个youtube视频。
我已经呆了好几个小时了。
{
"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
保存文件有助于我成功达到预期效果。
这两个答案都是作为我的帖子的评论发布的,而不是直接答案-因此,我无法同时为他们提供绿色的复选标记。