我有一个数组对象如下:
详细信息:
Array[2]
>0: Object
Name:"a"
Desc:"Desc"
>1: Object
Name:"b"
Desc:"Desc2"
>2: Object
Name:"C"
Desc:"Desc"
我想删除自" Desc"以来的最后一个对象。有第一个条目的重复条目。
我在javascript中试过这种方法,
removedup = details.reduce(function(a,b) { if (a.indexOf(b) < 0) a.push(b); return a },[]);
我想要输出,删除重复项,从而调整数组大小。
详细信息:
Array[1]
>0: Object
Name:"a"
Desc:"Desc"
>1: Object
Name:"b"
Desc:"Desc2"
我可以在逻辑中修改什么?
答案 0 :(得分:3)
您可以将Array#filter()
和thisArgs
用于临时对象。
var details = [{ Name: 'a', desc: 'Desc' }, { Name: 'b', desc: 'Desc2' }, { Name: 'C', desc: 'Desc' }, {Name: 'a', desc: 'toString'}],
removedup = details.filter(function (a) {
if (!(a.desc in this)) {
this[a.desc] = true;
return true;
}
}, Object.create(null));
document.write('<pre> ' + JSON.stringify(removedup, 0, 4) + '</pre>');
答案 1 :(得分:1)
试试这个:
var modified = details.filter(function (item) {
return !details.some(function (item_) {
return item_ !== item && item_.Desc === item.Desc;
});
});
答案 2 :(得分:0)
Using loadash
var output = _.chain(Array).reverse().indexBy('Desc').toArray().value();