如何使用ES6 HOF Javascript在数组中查找重复的对象(所有键值对应该相同)

Nakul Nagariya
var records = [ 
   { 
      "defaultContact":true,
      "contactName":"testContactName",
      "mobileNumber":"900000000000",
      "mobileDialCode":"+91 IN",
      "faxNumber":"123",
      "faxDialCode":"+91 IN",
      "emailId":"[email protected]"
   },
   { 
      "defaultContact":false,
      "contactName":"xyz",
      "mobileNumber":"900000001000",
      "mobileDialCode":"+91 IN",
      "faxNumber":"123",
      "faxDialCode":"+91 IN",
      "emailId":"[email protected]"
   },
   { 
      "defaultContact":false,
      "contactName":"asdasd",
      "mobileNumber":"123",
      "mobileDialCode":"+91 IN",
      "faxNumber":"",
      "faxDialCode":"",
      "emailId":""
   },
   { 
      "contactName":"asdasd",
      "defaultContact":false,
      "emailId":"",
      "faxDialCode":"",
      "faxNumber":"",
      "mobileDialCode":"+91 IN",
      "mobileNumber":"123"
   }
];

上面是一个对象数组,我已经使用两个for循环完成了此操作,但这看起来并不好,有人可以建议如何使用ES6高阶函数来完成此操作。

这里重复表示每个属性与每个属性完全匹配时。

以下是我的操作方法:

let duplicateRecords = [];
    for (let i = 0; i < records.length; i++) {
      for (let j = i + 1; j < records.length; j++) {
        if (
          records[i].contactName === records[j].contactName &&
          records[i].emailId === records[j].emailId &&
          records[i].faxDialCode === records[j].faxDialCode &&
          records[i].faxNumber === records[j].faxNumber &&
          records[i].mobileDialCode === records[j].mobileDialCode &&
          records[i].mobileNumber === records[j].mobileNumber
        ) {
          duplicateRecords = [records[j]];
        }
      }
    }

任何帮助,将不胜感激。

亚历山大·库哈连科(Alexander Kukharenko)

在您的情况下,使用循环for使用高阶函数更合适。但是您可以使用Object.keysArray.filter使您的代码更加通用和简短。

for (let i = 0; i < records.length; i++) {
   const keys = Object.keys(records[i]);
     for (let j = i + 1; j < records.length; j++) {
         const isDublicated = !Boolean(keys.filter(key => records[i][key] !== records[j][key]).length);
         isDublicated ? dublicatedRecords.push(records[j]) : null;
     }
}

或使用高阶函数:

const dublicatedRecords = records.reduce((acc, record, index) => {
  const keys = Object.keys(record);
  records.forEach((otherRecord, otherIndex) => {
      const isDublicated = !Boolean(keys.filter(key => record[key] !== otherRecord[key]).length);
      isDublicated && index !== otherIndex ? acc.push(otherRecord) : null;
  })
  return acc;
}, []);

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在键入的球拍中创建“概率” HOF(或语法)

来自分类Dev

递归是否有拉链和HOF的气味(在惯用的Clojure中)?

来自分类Dev

如何使用ES6 / Javascript在数组中的2个对象之间插入对象

来自分类Dev

如何使用ES6 Array.fill()清空数组

来自分类Dev

如何使 JavaScript 代码使用 ES6 工作?

来自分类Dev

如何在数组中查找多个元素-Javascript,ES6

来自分类Dev

TypeScript HOF的类型签名

来自分类Dev

如何合并具有相同ID的对象和嵌套在数组中的对象对应的数组对象

来自分类Dev

如何使用ES6 ...方法将对象添加到数组中?

来自分类Dev

使用Set的ES6中没有重复项的文字对象数组

来自分类Dev

如何使用ES6中的所有默认值来分解选项参数?

来自分类Dev

如何使用es6或lodash在javascript中按索引对两个数组进行分组?

来自分类Dev

如何在ES5中使用转译的ES6?

来自分类Dev

在ES6中使用分号

来自分类常见问题

如何使用ES6胖箭头对对象数组进行.filter()

来自分类Dev

如何使用map函数从对象数组返回多个键?ES6

来自分类Dev

如何使用销毁es6将对象属性转换为数组

来自分类Dev

如何遍历 ES6 中的对象数组

来自分类Dev

如何使用纯Javascript(ES6)通过id合并两个json对象值

来自分类Dev

如何在ES6中使用类扩展对象?

来自分类Dev

如何使用es6在react-native中初始化数组?

来自分类Dev

如何使用Traceur在ES6类中实现私有方法

来自分类Dev

如何在ES6中使用私有变量?

来自分类Dev

如何使用带有Mongoose和ES6 Promise的Graphql中的find解析多个记录

来自分类Dev

在PHP中,如何删除对象数组中的重复项,其中重复项定义为具有相同值的键值对的子集

来自分类Dev

如何使用 JS ES6 更新对象的一部分

来自分类Dev

如何使用es6打印对象内的元素值反应

来自分类Dev

如何使用ES6语法将选择选项的值转换为简单数组?

来自分类Dev

如何测试和声/ ES6 / ECMAScript 6 JavaScript?

Related 相关文章

  1. 1

    如何在键入的球拍中创建“概率” HOF(或语法)

  2. 2

    递归是否有拉链和HOF的气味(在惯用的Clojure中)?

  3. 3

    如何使用ES6 / Javascript在数组中的2个对象之间插入对象

  4. 4

    如何使用ES6 Array.fill()清空数组

  5. 5

    如何使 JavaScript 代码使用 ES6 工作?

  6. 6

    如何在数组中查找多个元素-Javascript,ES6

  7. 7

    TypeScript HOF的类型签名

  8. 8

    如何合并具有相同ID的对象和嵌套在数组中的对象对应的数组对象

  9. 9

    如何使用ES6 ...方法将对象添加到数组中?

  10. 10

    使用Set的ES6中没有重复项的文字对象数组

  11. 11

    如何使用ES6中的所有默认值来分解选项参数?

  12. 12

    如何使用es6或lodash在javascript中按索引对两个数组进行分组?

  13. 13

    如何在ES5中使用转译的ES6?

  14. 14

    在ES6中使用分号

  15. 15

    如何使用ES6胖箭头对对象数组进行.filter()

  16. 16

    如何使用map函数从对象数组返回多个键?ES6

  17. 17

    如何使用销毁es6将对象属性转换为数组

  18. 18

    如何遍历 ES6 中的对象数组

  19. 19

    如何使用纯Javascript(ES6)通过id合并两个json对象值

  20. 20

    如何在ES6中使用类扩展对象?

  21. 21

    如何使用es6在react-native中初始化数组?

  22. 22

    如何使用Traceur在ES6类中实现私有方法

  23. 23

    如何在ES6中使用私有变量?

  24. 24

    如何使用带有Mongoose和ES6 Promise的Graphql中的find解析多个记录

  25. 25

    在PHP中,如何删除对象数组中的重复项,其中重复项定义为具有相同值的键值对的子集

  26. 26

    如何使用 JS ES6 更新对象的一部分

  27. 27

    如何使用es6打印对象内的元素值反应

  28. 28

    如何使用ES6语法将选择选项的值转换为简单数组?

  29. 29

    如何测试和声/ ES6 / ECMAScript 6 JavaScript?

热门标签

归档