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
  • 现在对年龄重复3到5次
  • 使用
    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);