使用javascript删除json值

使用javascript删除json值,javascript,node.js,json,api,http-delete,Javascript,Node.js,Json,Api,Http Delete,我已经尝试了很多方法,但是我被javascript中的一个简单函数卡住了,我不知道我需要在哪里寻找。。。问题是: 我有这样一个Json文件: { "blacklist": [ { "email": "strangemail@gmail.com" }, { "email": "strangemail1@gmail.com" }, { "email": "strangemail2@gmail.com" },

我已经尝试了很多方法,但是我被javascript中的一个简单函数卡住了,我不知道我需要在哪里寻找。。。问题是:

我有这样一个Json文件:

{
  "blacklist": [
    {
      "email": "strangemail@gmail.com"
    },
    {
      "email": "strangemail1@gmail.com"
    },
    {
      "email": "strangemail2@gmail.com"
    },
    {
      "email": "fianlt@gmail.com"
    },
    {
      "email": "finalstatustest@gmail.com"
    }
  ]
}
 function cancel(email) // parameter that contain the value to delete
{
  let rawdata = fs.readFileSync('pvt.json'); //get local json file
  let mydata = JSON.parse(rawdata); //parsing rawdata 

  var key = email; //setting up key
  delete mydata.blacklist[key]; //using delete function for delete an element

  let data = JSON.stringify(mydata, null, 2); //stringify the result
  fs.writeFileSync('pvt.json', data); // overwrite local file with new one with all changes
}
我希望使用以下简单功能简单地删除电子邮件:

{
  "blacklist": [
    {
      "email": "strangemail@gmail.com"
    },
    {
      "email": "strangemail1@gmail.com"
    },
    {
      "email": "strangemail2@gmail.com"
    },
    {
      "email": "fianlt@gmail.com"
    },
    {
      "email": "finalstatustest@gmail.com"
    }
  ]
}
 function cancel(email) // parameter that contain the value to delete
{
  let rawdata = fs.readFileSync('pvt.json'); //get local json file
  let mydata = JSON.parse(rawdata); //parsing rawdata 

  var key = email; //setting up key
  delete mydata.blacklist[key]; //using delete function for delete an element

  let data = JSON.stringify(mydata, null, 2); //stringify the result
  fs.writeFileSync('pvt.json', data); // overwrite local file with new one with all changes
}

问题是。。。它不起作用。。。我不知道为什么。。。我试图阅读文档,但没有找到任何解决方案该
delete
操作符用于使用属性名称从对象中删除属性。您正试图使用数组中对象的属性值从数组中删除条目

假设
email
是一个变量,其中包含要删除的条目中的电子邮件地址,这是一种简单的方法:

mydata.blacklist = mydata.blacklist.filter(entry => entry.email !== email);
filter
从原始数组中符合回调条件的条目构建一个新数组-在这种情况下,它们的
email
属性与您要删除的电子邮件地址不匹配

如果希望就地修改阵列而不是创建新阵列,则可以使用和:


Delete用于从
对象
中删除
键值
。这里有一个
项[对象]数组
。您应该使用
过滤器
删除不需要的
元素

更新:

function cancel(selectedEmail) {
  let rawdata = fs.readFileSync("pvt.json"); //get local json file
  let mydata = JSON.parse(rawdata); //parsing rawdata
  mydata.blacklist = mydata.blacklist.filter(
    (item) => item.email !== selectedEmail.email
  );
  fs.writeFileSync("pvt.json", JSON.stringify(mydata, null, 2)); // overwrite local file with new one with all changes
}
示例:

function cancel(selectedEmail) {
  let rawdata = fs.readFileSync("pvt.json"); //get local json file
  let mydata = JSON.parse(rawdata); //parsing rawdata
  mydata.blacklist = mydata.blacklist.filter(
    (item) => item.email !== selectedEmail.email
  );
  fs.writeFileSync("pvt.json", JSON.stringify(mydata, null, 2)); // overwrite local file with new one with all changes
}
const info={
黑名单:[
{
电子邮件:“strangemail@gmail.com",
},
{
电子邮件:“strangemail1@gmail.com",
},
{
电子邮件:“strangemail2@gmail.com",
},
{
电子邮件:“fianlt@gmail.com",
},
{
电子邮件:“finalstatustest@gmail.com",
},
],
};
const selectedEmail={email:finalstatustest@gmail.com"}
info.blacklist=info.blacklist.filter(item=>item.email!==selectedEmail.email)

console.log(info)
您的
电子邮件
变量的值是多少?它在代码中不知从何而来。它是包含您要删除的电子邮件地址的字符串吗?这是什么?var key=电子邮件//设置key@T.J.谢谢你的回复!是的,email是一个字符串变量,包含要删除的电子邮件。对不起,我不会更新代码@ChandraShekhar键是要删除的变量,email是在包含要删除的值的函数中传递的参数。谢谢您的回复!是的,email是作为参数传递的值,我们需要删除它。。。是的,我已经使用了filter,但是我不知道如何删除后面的值filtered@Zenek-您不必在筛选后将其删除。过滤掉它实际上就是删除它。TypeError:mydata.findIndex不是function@Zenek-对不起,应该是
mydata.blacklist
。谢谢您的回复。我试图使用你的功能,但如果可以,我想了解你使用了什么(我不喜欢复制/粘贴)。感谢您的功能,我们将获得一个名为“mydata.blacklist”的新数组,该数组没有搜索电子邮件?感谢您的回复。我试过这个,但不管用。电子邮件位于数组和json文件中:/u可以看到日志..电子邮件中的内容。如果它不是对象。。然后使用
info.blacklist.filter(item=>item.email!==email)
可能是我的错。。。请让我了解您所做的:我已经添加了您在我的js服务器端脚本中编写的函数代码。然后您已经编写了代码的“示例”,但它没有链接到(?)的cancel函数,所以。。。(?)样本供u运行并查看输出工作。这是一种需要理解的逻辑。你写你自己的服务器代码。