Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/406.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript从数组中删除重复的对象_Javascript_Jquery_Arrays_Object - Fatal编程技术网

Javascript从数组中删除重复的对象

Javascript从数组中删除重复的对象,javascript,jquery,arrays,object,Javascript,Jquery,Arrays,Object,我无法从数组中删除重复的对象 例如: var list = [{place:"AAA",name:"Me"}, {place:"BBB",name:"You"}, {place:"AAA",name:"Him"}]; 在本例中,我有3个对象,我想删除具有重复位置的对象试试这个 var result = {}; for (i = 0, n = arr.length; i < n; i++) { var item = arr[i]; result[ item.place +

我无法从数组中删除重复的对象

例如:

var list = [{place:"AAA",name:"Me"}, {place:"BBB",name:"You"}, {place:"AAA",name:"Him"}];
在本例中,我有3个对象,我想删除具有重复位置的对象

试试这个

var result = {};
for (i = 0, n = arr.length; i < n; i++) {
    var item = arr[i];
    result[ item.place + " - " + item.name ] = item;
}

创建一个
对象
以按项目的
位置
值存储项目,因为具有相同键的新项目将覆盖旧项目,这将轻松删除所有重复项

var list=[{place:“AAA”,name:“Me”},{place:“BBB”,name:“You”},{place:“AAA”,name:“Him”}];
var removeDuplicate=函数(列表){
var keyStore={};
var输出=[];
//如果你想从旧的创建一个全新的,使用
//list=JSON.parse(JSON.stringify(list));
//上面注释掉的代码将创建列表的副本,因此输出中的项不会影响原始项。
列表.forEach(功能(项){
//新的覆盖旧的。
密钥库[item.place]=项;
});
var键;
for(键入密钥库){
push(keyStore[key]);
}
返回输出;
};
控制台日志(移除副本(列表))当您添加时:


我只想删除一个,不管是哪一个

如果要删除重复项并仅保留特定位置的第一个位置,只需使用一个简单的循环从输入重新创建一个新数组:

var list = [{place:"AAA",name:"Me"}, {place:"BBB",name:"You"}, {place:"AAA",name:"Him"}];

var uniqPlace = function(array){
    var result = [];
    array.forEach(function(el){
        if (result.filter(function(n){ return n.place === el.place }).length==0){
            result.push(el);
        }
    })
    return result;
}
输出:

uniqPlace(list);
[{“地点”:“AAA”,“姓名”:“我”},{“地点”:“BBB”,“姓名”:“你”}]


以防万一有人想知道:
underline.js
解决方案:

var list = [{place:"AAA",name:"Me"}, {place:"BBB",name:"You"}, {place:"AAA",name:"Him"}];

_.uniq(list, function(item, key, a) { 
    return item.place;
})
一个简单的例子:

var list=[{place:“AAA”,name:“Me”},{place:“BBB”,name:“You”},{place:“AAA”,name:“Him”}];
列表.forEach(函数(i){
var duplicates=list.filter(函数(j){
返回j!==i&&j.place==i.place;
});
forEach(函数(d){list.splice(list.indexOf(d),1);});
});
//list=[{地点:“AAA”,名字:“我”},{地点:“BBB”,名字:“你”}];

document.write(JSON.stringify(list))3从阵列中删除重复对象的方法

let list=[{place:“AAA”,name:“Me”},
{地点:“BBB”,名字:“你”},
{地点:“AAA”,名字:“他”};
让output1=Array.from(新集合(list.map(list=>list.place))).map(place=>{
返回{
地点:地点,,
name:list.find(a=>a.place===place).name
}
})
console.log(“---------------------------1st-way”)
console.log(output1)
让output2=list.reduce((累加器,元素)=>{
如果(!acculator.find(el=>el['place']===element['place'])){
蓄能器。推动(元件);
}
回流蓄能器;
},[]);
console.log(“---------------------------2rd-way”)
console.log(output2)
常量输出3=[];
常量映射=新映射();
for(列表的常量对象){
如果(!map.has(object.place)){
map.set(object.place,true);
输出3.push({
地点:object.place,
名称:object.name
});
}
}
console.log(“---------------------------3rd-way”)

log(output3)
FYI这不是一个数组-这是一个语法错误。您需要将括号替换为
[]
,首先您必须决定要保留哪一个括号。或者你想两个都删除?我只想删除一个,没关系one@MarcosViniciusdeSouzaGouve您可以从这里了解如何删除它:
var list = [{place:"AAA",name:"Me"}, {place:"BBB",name:"You"}, {place:"AAA",name:"Him"}];

_.uniq(list, function(item, key, a) { 
    return item.place;
})