Javascript 在下划线中的对象中查找对象中的重复项
我有一个对象如下:Javascript 在下划线中的对象中查找对象中的重复项,javascript,object,collections,underscore.js,Javascript,Object,Collections,Underscore.js,我有一个对象如下: result = { 1:{name:'john', age: 20, sex:'M'}, 2:{name:'smith', age: 25, sex:'M'}, 3:{name:'john', age: 20, sex:'M'}, 4:{name:'anna', age: 22, sex:'F'} } 我需要检查表中是否已经存在基于名称和年龄的每个对象,如果存在重复项,则返回true 我该怎么做 谢谢。一种方法是 链接结果对象 将它传
result = {
1:{name:'john', age: 20, sex:'M'},
2:{name:'smith', age: 25, sex:'M'},
3:{name:'john', age: 20, sex:'M'},
4:{name:'anna', age: 22, sex:'F'}
}
我需要检查表中是否已经存在基于名称和年龄的每个对象,如果存在重复项,则返回true
我该怎么做
谢谢。一种方法是
结果
对象map
,这样我们就可以得到一个值数组,即[{姓名:'john',年龄:20,性别:'M',{姓名:'smith',年龄:25,性别:'M',{姓名:'john',年龄:20,性别:'M',姓名:'anna',年龄:22,性别:'F'}]
备注:如果您不需要键,即1:,2:则以result=[object,object…]的形式获取结果。那么第2步就没有必要了groupBy('name')
,后者将按名称将数组分组到2中filter
并在数组长度大于1的位置对其进行过滤flant
value()
提取包装对象的值
var duplicate = _.chain(result)
.map(function(value, key){return value;})
.groupBy('name')
.filter(function(array){ return array.length > 1})
.flatten()
.groupBy('age')
.filter(function(array){ return array.length > 1})
.flatten()
.value()
.length > 1 ? true: false ;
console.log(duplicate);