检查数组中的对象属性是否与具有相同ID的另一个对象重复
Check if an object property in an array is duplicate with another object of the same ID
我有一个数组,类似于:
var arr = [
{z: '1', val: 'duplicate'},
{z: '1', val: 'duplicate'},
{z: '2', val: 'test'},
{z: '1', val: 'duplicate'},
{z: '2', val: 'test2'}
];
我想要一个函数来确定具有相同id的对象的属性"val"是否有任何重复值。
因此,在这种情况下,函数将返回索引0、1和3是重复的。
一个简单的解决方案就是遍历数组并记录重复项。这是一个天真的解决方案。我相信你可以做得更好。
function dups(arr) {
var map = {},
result = [],
el;
// save map of all elements and record index of occurences
for (var i = 0; i < arr.length; i++) {
el = JSON.stringify(arr[i]);
if (map[el]) {
map[el].dups.push(i)
} else {
map[el] = {
dups: [i]
}
}
}
// return array for elements with more than 1 occurence
for (var key in map) {
if (map[key].dups.length > 1) {
result = result.concat(map[key].dups)
}
}
return result
}
请注意,此解决方案不对每个对象中的键数或它们在数组中的顺序进行任何假设。
相关文章:
- 如果使用 lodash 将属性存在于另一个对象中,则向对象添加属性
- Javascript(Angular)从一个对象数组到第二个数组查找值
- 对一个对象使用reduce可以返回一个没有't在数组中包含目标字母
- AngularJS&JSON-从Previous&下一个对象
- jQuery$.inArray()总是返回-1和一个对象数组
- javascript处理一个对象数组以获得一个新的对象数组
- javascript函数,它接受两个输入:一个对象和一个键,并返回对象中该键的相应值
- 你能用来自数组的属性名称生成一个对象吗
- 检查数组中的对象属性是否与具有相同ID的另一个对象重复
- 如何使用 angularjs 获取同一 json 数组中具有 id 的另一个对象
- 返回匹配对象 id 的下一个和上一个对象
- 在一个对象的Javascript数组中,如果一个特定的数组元素本身就是一个对象数组,我如何通过名称/ID来定位该元素
- 如何获得一个对象的Id,这是添加在代码背后使用javascript
- 可能的未处理承诺拒绝(id:0): undefined不是一个对象
- 如何使用另一个对象的数组找到具有匹配ID的所有文档
- 循环遍历一个集合并返回一个新集合,其中组合了具有相同id的对象
- 如何使用分配给子对象的id调用另一个对象中的对象
- AngularJS-使用Select元素的Form从另一个对象获取Id
- 通过ID参数参照另一个对象构建数组
- 可能绑定剑道ui网格自定义下拉到一个id而不是一个对象