繁体   English   中英

如何删除具有相同ID的两个json对象

[英]how to remove two json objects with same id

如果我有一个具有以下内容的.json文件:

[
         {
                    "id": "1234",
                    "day": "Monday",
                    "course": "Math110",

         },
         {
                    "id": "1234",
                    "day": "Wednesday",
                    "title": "Math110",

         },
         {
                    "id": "1345",
                    "day": "Tuesday",
                    "title": "Economics210",

         }
]

如何在JavaScript中删除ID为“ 1234”的所有对象? (请注意,有两个具有相同ID的对象)

delete["1234"]有效?

使用.filter过滤掉数组的元素:

 const input = [{ "id": "1234", "day": "Monday", "course": "Math110", }, { "id": "1234", "day": "Wednesday", "title": "Math110", }, { "id": "1345", "day": "Tuesday", "title": "Economics210", } ]; const output = input.filter(({ id }) => id !== '1234'); console.log(output); 

您可以将JSON解析为一个数组,然后使用Array.prototype.filter获取一个新的数组,该数组不包含ID为"1234"的对象:

 const json = '[{"id":"1234","day":"Monday","course":"Math110"},{"id":"1234","day":"Wednesday","title":"Math110"},{"id":"1345","day":"Tuesday","title":"Economics210"}]'; const result = JSON.parse( json ).filter( obj => obj.id !== "1234" ); console.log( JSON.stringify( result, null, ' '.repeat(8) ) ); 

您不能使用delete运算符,因为它用于删除对象中的属性 您实际上要删除数组内的对象。

使用好旧的for循环和Array.splice()

 var inputArray = [{ "id": "1234", "day": "Monday", "course": "Math110", }, { "id": "1234", "day": "Wednesday", "title": "Math110", }, { "id": "1345", "day": "Tuesday", "title": "Economics210", } ]; var deleteId = "1234"; for (var i = 0; i < inputArray.length; i++) { if (inputArray[i].id === deleteId) { inputArray.splice(i, 1); i = i-1; } } console.log(inputArray); 

注意:如果可以创建另一个数组而不修改现有数组,可以使用其他答案中提到的Array.filter()

您必须通过指定项目在数组中的位置来删除:

 const arr = [{ "id": "1234", "day": "Monday", "course": "Math110", }, { "id": "1234", "day": "Wednesday", "title": "Math110", }, { "id": "1345", "day": "Tuesday", "title": "Economics210", } ]; arr.forEach(function(item, i){ if(item.id == "1234") delete arr[i]; }); console.log(arr.filter(j => j)) 

您可以使用过滤器方法: https : //developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/filter

items = [
    {
        "id": "1234",
        "day": "Monday",
        "course": "Math110",

    },
    {
         "id": "1234",
         "day": "Wednesday",
         "title": "Math110",

    },
    {
         "id": "1345",
         "day": "Tuesday",
         "title": "Economics210",

     }
];

items.filter(function(item) { 
   return item.id !== '1234';  
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM