[英]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.