Javascript 如果项目具有相同的键值,则从对象数组中删除项目

Javascript 如果项目具有相同的键值,则从对象数组中删除项目,javascript,arrays,object,filter,reduce,Javascript,Arrays,Object,Filter,Reduce,我正在努力使这件事工作。我有这样一个对象数组: 让我的城市=[ { 价值:“巴塞罗那”, 代码:02342837492482347 }, { 价值观:“罗马”, 代码:28282716171819 }, { 价值:“巴塞罗那”, 代码:67246726482 }, { 价值:“巴黎”, 代码:12319808080 }, ] 我想删除键值相同但保留第一个的所有项目。所以我会得到这样的结果: 让我的城市=[ { 价值:“巴塞罗那”, 代码:02342837492482347 }, { 价值观

我正在努力使这件事工作。我有这样一个对象数组:

让我的城市=[
{
价值:“巴塞罗那”,
代码:02342837492482347
},
{
价值观:“罗马”,
代码:28282716171819
},
{
价值:“巴塞罗那”,
代码:67246726482
},
{
价值:“巴黎”,
代码:12319808080
},  
]
我想删除键
相同但保留第一个的所有项目。所以我会得到这样的结果:

让我的城市=[
{
价值:“巴塞罗那”,
代码:02342837492482347
},
{
价值观:“罗马”,
代码:28282716171819
},
{
价值:“巴黎”,
代码:12319808080
},  
]
你想到什么解决办法了吗? 谢谢

我有两个

首先,您可以临时使用一个对象,该对象的值为城市键,
code
为值。然后使用
forEach()
myCities
上迭代并填充对象。完成后,使用
object.keys(tempObj.map()
将该对象映射回数组

第二个想法是直接使用a并从
myCities
创建第二个数组。它的第三个参数包含输入数组(
myCities
)。但即使在这里,你也需要一些簿记……你可以试试

让我的城市=[
{
价值:“巴塞罗那”,
代码:02342837492482347
},
{
价值观:“罗马”,
代码:28282716171819
},
{
价值:“巴塞罗那”,
代码:67246726482
},
{
价值:“巴黎”,
代码:12319808080
},  
]
log(q.uniq(myCities,x=>x.value))
让我的城市=[
{
价值:“巴塞罗那”,
代码:02342837492482347
},
{
价值观:“罗马”,
代码:28282716171819
},
{
价值:“巴塞罗那”,
代码:67246726482
},
{
价值:“巴黎”,
代码:12319808080
},  
]
功能唯一键(objArr){
设tmp={};
for(设i=0;i
var myCities=[
{
价值:“巴塞罗那”,
代码:02342837492482347
},
{
价值观:“罗马”,
代码:28282716171819
},
{
价值:“巴塞罗那”,
代码:67246726482
},
{
价值:“巴黎”,
代码:12319808080
},  
];
var-arr=[];var-res=[];

对于(var i=0;我查看了一下,请显示您迄今为止所做的任何不起作用的尝试。您应该已经做了一次。嘿@Marc89,这方面有什么更新吗?我的答案有什么问题吗?拜托,我真的不明白。
var myCities = [
  {
    value: 'Barcelona',
    code: 02342837492482347
  },
  {
    value: 'Rome',
    code: 28282716171819
  },
  {
    value: 'Barcelona',
    code: 67246726482
  },
  {
    value: 'Paris',
    code: 12319808080
  },  
];
    var arr = []; var res = [];
    for(var i = 0; i<myCities.length;i++){
      if(!arr.includes(myCities[i].value)){
        res.push(myCities[i]);
        arr.push(myCities[i].value);
      }
    }