首页 > 其他分享 >js 判断对象数组里面是否存在重复数据

js 判断对象数组里面是否存在重复数据

时间:2023-07-18 18:33:46浏览次数:32  
标签:const name 重复 js 对象 数组 id

可以使用 JavaScript 来判断对象数组中是否存在重复数据。下面是一种常见的解决方法:

function hasDuplicate(array) {
  const seen = new Set();

  for (let i = 0; i < array.length; i++) {
    const objString = JSON.stringify(array[i]);
    if (seen.has(objString)) {
      return true;
    }
    seen.add(objString);
  }

  return false;
}

在上述代码中,我们使用了一个 Set 数据结构来存储已经遍历过的对象的字符串表示。遍历数组中的每个对象,将其转换为 JSON 格式的字符串,然后判断该字符串是否已经存在于 Set 中。如果存在,则表示有重复数据,函数返回 true。如果遍历完整个数组后都没有出现重复数据,则函数返回 false

以下是一些示例用法:

const array1 = [{ id: 1, name: 'John' }, { id: 2, name: 'Jane' }, { id: 3, name: 'John' }];
console.log(hasDuplicate(array1)); // true

const array2 = [{ id: 1, name: 'John' }, { id: 2, name: 'Jane' }, { id: 3, name: 'Bob' }];
console.log(hasDuplicate(array2)); // false

请注意,由于判断重复是基于对象的字符串表示,因此相同内容但不同对象引用的数据将被视为不重复。如果你需要根据对象的某个特定属性来判断重复,可以相应地调整代码中的比较逻辑。

标签:const,name,重复,js,对象,数组,id
From: https://www.cnblogs.com/gaosj20210301/p/17563827.html

相关文章

  • Reactjs学习-JSX语法
    本篇是关于React的基础-JSX语法什么是JSX在js文件中写html,这样的语法就是JSX 如何书写跟html写法一致,注意,首字母大写的标签是组件,首字母小写的,例如div是html元素 有哪些注意事项1.在类组件中写注释,用花括号包起来2.style中的某个属性需要用state中的值, 用模......
  • 无效重复类定义错误:Invalid duplicate class definition of class xxxx
    Descriptionstartupfailed:/xxxx/OrderFixFile.groovy:5:InvalidduplicateclassdefinitionofclassOrderFixFile:Thesource/xxxx/OrderFixFile.groovycontainsatleasttwodefinitionsoftheclassOrderFixFile.Oneoftheclassesisanexplicitgenera......
  • Reactjs学习-State
    本篇是关于React的基础-State在哪儿定义react在Constructor函数中定义state,如下 如何绑定使用JSX语法中,想使用刚才定义的state,需要用花括号包起来例如 如何修改state需要绑定事件,React提供setState函数来做这个操作this.setState({state名:值})注意:......
  • Java 中 Json 扁平化与去扁平化处理
    引入依赖<!--依赖--><dependency><groupId>com.github.wnameless.json</groupId><artifactId>json-flattener</artifactId><version>0.16.4</version></dependency>demopublicstaticvoid......
  • python 删除数组 空值
    Python删除数组空值的步骤在Python中,删除数组中的空值可以通过以下步骤完成。下面是一个简单的流程表格,显示了实现这个功能的步骤和相应的代码:步骤代码1.导入必要的模块和库importnumpyasnp2.创建一个包含空值的数组arr=np.array(['','hello','','world'......
  • 【CJsonObject】C++ JSON 解析器使用教程
    能选封装的尽量不使用底层的一、CJsonObject简介CJsonObject是Bwar基于cJSON全新开发一个C++版的JSON库。CJsonObject的最大优势是轻量、简单好用,开发效率极高,尤其对多层嵌套json的读取和生成、修改极为方便。CJsonObject比cJSON简单易用得多,且只要不是有意不......
  • python将16进制数组转换成字符串
    Python将16进制数组转换成字符串在编程中,我们经常需要处理不同的数据类型和格式。其中,16进制是一种十分常见的数据表示方式,特别在加密和通信领域中经常用到。本篇文章将介绍如何使用Python将16进制数组转换成字符串,并提供相应的代码示例。什么是16进制?在计算机科学中,16进制(Hexad......
  • EaselJS 源码分析系列--第三篇
    这一篇分析另外四个稍显高级的显示类--Sprite、Movieclip、DOMElement、BitmapTextSpriteSheetSpriteSheet比较简单它继承自EventDispatcher所以SpriteSheet并不是显示类它是显示类Sprite的数据来源为Sprite传递组装SpriteSheet实现动画效果如:vardata={ ......
  • js中数组常用的方法
    javascript(js)中数组常用的方法1.push():向数组末尾添加一个或多个元素,并返回新数组的长度。constarr=[1,2,3];arr.push(4);//[1,2,3,4]2.pop():移除数组末尾的元素,并返回被移除的元素。constarr=[1,2,3];constpoppedElement=arr.pop();//3,arr变为[1,......
  • javascript-js正则表达式-常用的正则表达式
    js常用的正则表达式1.匹配Email地址:constemailRegex=/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/;2.匹配URL:consturlRegex=/^(https?:\/\/)?([a-zA-Z0-9.-]+\.[a-zA-Z]{2,})(:[0-9]+)?(\/[^\s]*)?$/;3.匹配日期(YYYY-MM-DD):constdateRegex=/^\d{4}-(0[1-9]|......