![](/img/trans.png)
[英]How to get unique an array of objects back from a complex an array of objects?
[英]How to get unique objects from objects array in javascript
要为您的特定情况获取“唯一”对象数组(具有列表中的最后一个索引),请使用以下方法( Array.forEach
、 Array.map
和Object.keys
函数):
// exemplary array of objects (id 'WAew111' occurs twice)
var arr = [{id: 'WAew111', text: "first"}, {id: 'WAew222', text: "b"}, {id: 'WAew111', text: "last"}, {id: 'WAew33', text: "c"}],
obj = {}, new_arr = [];
// in the end the last unique object will be considered
arr.forEach(function(v){
obj[v['id']] = v;
});
new_arr = Object.keys(obj).map(function(id) { return obj[id]; });
console.log(JSON.stringify(new_arr, 0, 4));
输出:
[
{
"id": "WAew111",
"text": "last"
},
{
"id": "WAew222",
"text": "b"
},
{
"id": "WAew33",
"text": "c"
}
]
最好的方法是将您的数据结构修改为一个对象本身,其中每个键都是 ID 之一:
{
"WadWA7WA6WAaWAdWA...": {
"text": "birla"
},
"WadWA...": {
"test": "ab"
}
}
等等。 如果数据来自以这种方式格式化的源,您总是可以将结果数组映射到这种格式。
您可以使用 id 作为键创建一个散列并将值保留为整个对象:
var myHash = new Object();
var i;
for(i = 0; i < yourArray.length; i++) {
var yourObjId = yourArray[i][id];
myHash[yourObjId] = yourArray[i];
}
您将得到一个包含具有唯一 ID 的对象的哈希myHash
(并且只会存储重复的最后一个对象)
试试这个:只需使用 id 作为键添加到一个新对象
var arr = [{id:'123', text: 'a'}, {id:'234', text: 'b'}, {id:'123', text: 'c'}];
var map = new Object();
for(var i in arr){ map[arr[i].id] = arr[i]; }
var newArr = [];
for(var i in map){ newArr.push(map[i]); }
newArr 应包含第二个和第三个对象。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.