Javascript 如何从重复键值的JSON数组中删除JSON

Javascript 如何从重复键值的JSON数组中删除JSON,javascript,arrays,json,arraylist,Javascript,Arrays,Json,Arraylist,我有一个JSON,如下所示: [{"name": "John", "id": 1}, {"name": "Don", "id": 2}, {"name": "Tom", "id": 3}, {"name": "NewJohn", "id": 1}, {"name": "Tim", "id": 4}] 我想首先确定键“id”是否具有相同的值。如果是,我想删除之前具有相同“id”的JSON,以便在JSON数组中获得具有唯一“id”值的JSON [{"name": "Don", "id":

我有一个JSON,如下所示:

[{"name": "John", "id": 1},
 {"name": "Don", "id": 2},
 {"name": "Tom", "id": 3},
 {"name": "NewJohn", "id": 1},
 {"name": "Tim", "id": 4}]
我想首先确定键“id”是否具有相同的值。如果是,我想删除之前具有相同“id”的JSON,以便在JSON数组中获得具有唯一“id”值的JSON

[{"name": "Don", "id": 2},
 {"name": "Tom", "id": 3},
 {"name": "NewJohn", "id": 1},
 {"name": "Tim", "id": 4}]
如何在javascript中实现这一点

var result=new Map(data.map(el=>[el.id,el]));
你可以用它来创建地图。。可以将其分解为阵列:

result=[...result].map(e=>e[1]);

你可以用它来创建地图。。可以将其分解为阵列:

result=[...result].map(e=>e[1]);

如果没有相同id的元素,您可以使用
reduceRight
从末尾开始循环,并添加到新数组中

var data=[{“name”:“John”,“id”:1},{“name”:“Don”,“id”:2},{“name”:“Tom”,“id”:3},{“name”:“NewJohn”,“id”:1},{“name”:“Tim”,“id”:4}]
var结果=[]
数据还原右(函数(r,e){
如果(!r[e.id]){
结果:未移位(e);
r[e.id]=1;
}
返回r;
}, {})

console.log(result)
如果没有相同id的元素,您可以使用
reduceRight
从末尾开始循环并添加到新数组中

var data=[{“name”:“John”,“id”:1},{“name”:“Don”,“id”:2},{“name”:“Tom”,“id”:3},{“name”:“NewJohn”,“id”:1},{“name”:“Tim”,“id”:4}]
var结果=[]
数据还原右(函数(r,e){
如果(!r[e.id]){
结果:未移位(e);
r[e.id]=1;
}
返回r;
}, {})

console.log(结果)
使用以下代码。这将解决您的问题

var obj=[{“name”:“John”,“id”:1},{“name”:“Don”,“id”:2},{“name”:“Tom”,“id”:3},{“name”:“NewJohn”,“id”:1},{“name”:“Tim”,“id”:4}];
var seenNames={};
obj=obj.reverse().filter(函数(currentObject){
if(seenNames中的currentObject.id){
返回false;
}否则{
seenNames[currentObject.id]=true;
返回true;
}
});

console.log(obj)
使用以下代码。这将解决您的问题

var obj=[{“name”:“John”,“id”:1},{“name”:“Don”,“id”:2},{“name”:“Tom”,“id”:3},{“name”:“NewJohn”,“id”:1},{“name”:“Tim”,“id”:4}];
var seenNames={};
obj=obj.reverse().filter(函数(currentObject){
if(seenNames中的currentObject.id){
返回false;
}否则{
seenNames[currentObject.id]=true;
返回true;
}
});

console.log(obj)
使用两个for循环删除以前的id属性

var data=[{“name”:“John”,“id”:1},
{“name”:“Don”,“id”:2},
{“姓名”:“汤姆”,“身份证”:3},
{“name”:“NewJohn”,“id”:1},
{“name”:“Tim”,“id”:4}];
函数deleteJsonProperty(dataJson){

对于(var i=0;i使用两个for循环,我删除了前面的id属性

var data=[{“name”:“John”,“id”:1},
{“name”:“Don”,“id”:2},
{“姓名”:“汤姆”,“身份证”:3},
{“name”:“NewJohn”,“id”:1},
{“name”:“Tim”,“id”:4}];
函数deleteJsonProperty(dataJson){

对于(var i=0;i您尝试了什么?您尝试了什么?但这将只给出所需的对象。您可以更具体一些…只需将它们的输出与您的进行比较。但这将只给出所需的对象。您可以更具体一些…只需将它们的输出与您的进行比较。是的,问题比看起来更棘手,而且简化程度更高(如果可能的话,你能删除逗号运算符吗?;)是的,这个问题比看起来更棘手,reduceRight似乎能做到这一点……如果可能的话,你能删除逗号运算符吗?;)