从 json 数组中搜索和删除对象

ank*_*kur 4 javascript arrays jquery json

我正在尝试搜索一个对象并从 json 数组中删除

我的 json 对象数组看起来像

var data = [{
    {id: "1", name: "Snatch", type: "crime"},
    {id: "2", name: "Witches of Eastwick", type: "comedy"},
    {id: "3", name: "X-Men", type: "action"},
    {id: "4", name: "Ordinary People", type: "drama"},
    {id: "5", name: "Billy Elliot", type: "drama"},
    {id: "6", name: "Toy Story", type: "children"}
}];
Run Code Online (Sandbox Code Playgroud)

我想要实现的是,如果我有一个 Id=1 的对象,
我可以搜索与数组匹配的数组并将其从数组中删除。

我正在通过下面的代码尝试这个

function RemoveNode(id)
{
 data.forEach(function (emp) {
   if(emp.Id == id)
    {
      delete emp;
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

我无法让它工作,请建议一个更好的方法来做到这一点

isv*_*all 5

您使用的数据结构无效,您的数组需要放在方括号中 []

对于您的情况,最好使用filter功能:

var data = [
    {id: "1", name: "Snatch", type: "crime"},
    {id: "2", name: "Witches of Eastwick", type: "comedy"},
    {id: "3", name: "X-Men", type: "action"},
    {id: "4", name: "Ordinary People", type: "drama"},
    {id: "5", name: "Billy Elliot", type: "drama"},
    {id: "6", name: "Toy Story", type: "children"}
];

function RemoveNode(id) {
    return data.filter(function(emp) {
        if (emp.id == id) {
            return false;
        }
        return true;
    });
}

var newData = RemoveNode("1");

document.write(JSON.stringify(newData, 0, 4));
Run Code Online (Sandbox Code Playgroud)