JavaScript如何检测对象数组中是否存在重复元素
JS检测对象数组是否存在重复元素
需求说明
- 实现一套检测逻辑,判断目标数组中是否存在重复的对象元素
- 存在重复元素时返回
true,无重复元素时返回false
待检测目标数组
var myarray = [ { "msf": "3.98", "ptc": "5.00" }, { "msf": "3.98", "ptc": "1.00" }, { "msf": "3.98", "ptc": "1.00" } ]
预期输出
上述示例数组中索引1和索引2的两个对象,所有属性值完全一致,属于重复元素,预期检测返回结果为
true。
实现代码
针对普通键值对对象、无嵌套循环引用/函数属性的场景,直接通过序列化+集合去重判断即可,还兼容对象键顺序不一致但内容相同的判定场景:
function hasDuplicateElements(arr) { const recordSet = new Set() for (const item of arr) { // 对对象的键做排序后再序列化,避免键顺序不同导致的判定误差 const serialized = JSON.stringify(item, Object.keys(item).sort()) if (recordSet.has(serialized)) { return true } recordSet.add(serialized) } return false } // 执行测试 console.log(hasDuplicateElements(myarray)) // 输出 true,符合预期
内容的提问来源于stack exchange,提问作者Shammas Pk
相关产品推荐
相关产品推荐

