首页 > 其他分享 >js判断数组中是否有重复的数据

js判断数组中是否有重复的数据

时间:2022-08-23 18:36:11浏览次数:73  
标签:arr 12 const name 重复 age 张三 js 数组

 一、普通数据

const arr=['111','222','333','444','555'];
//判断数组元素是否有重复
        getisRepeat: function(arr) {
            var hash = {};
            for (var i in arr) {
                if (hash[arr[i].name]) {
                    //hash 哈希
                    return true;
                }
                hash[arr[i].name] = true;
            }
            return false;
        },

二、对象元素数组

例如有需求,要判断下方这个数组中,name是否有重复的数据

const arr=[
  {name:"张三3",age:12},
  {name:"张三2",age:12},
  {name:"张三",age:12},
  {name:"张三1",age:12}
];

下面用三种方法解决

1.先利用ES6语法Set将数组去重,之后再原数组比较长度,若长度小于原数组,则说明数组有重复值

const arr=[
  {name:"张三3",age:12},
  {name:"张三2",age:12},
  {name:"张三",age:12},
  {name:"张三1",age:12}
];
const newListLength=new Set(arr.map(item=>item.name)).size;
const listLength=arr.length;
if(listLength>newListLength){
  console.log("重复");
}

2.先将数组转换成字符串,再遍历数组,在字符串中移除当前的数组元素之后还能找到该元素,则说明数组有重复值。

const arr=[
  {name:"张三3",age:12},
  {name:"张三2",age:12},
  {name:"张三",age:12},
  {name:"张三1",age:12}
];
/*
  replace不用正则的话,只会替换掉第一个符合条件的数据
  之所以加逗号,是因为这样可以确保数据的唯一性,如果不加逗号,会导致数据不对,比如说第三条数据"张三",replace之后还会查到第四条数据中的"张三",所以得加上逗号确保唯一性
*/
const newArr=arr.map(item=>item.name);
const str=newArr.join(",")+",";
const flag=newArr.some(item=>{
  return str.replace(item+",","").indexOf(item+",")>-1
});
if(flag){
  console.log("重复");
}

3.利用findIndex或者indexOf查到的下标和当前循环的下标对比是否相等

//indexOf查找是否有重复的
const arr=[
  {name:"张三3",age:12},
  {name:"张三2",age:12},
  {name:"张三",age:12},
  {name:"张三1",age:12}
];
const newArr=arr.map(item=>item.name);
const isRepeat=newArr.some((item,index,arr)=>arr.indexOf(item)!=index);
if(isRepeat){
  console.log("重复");
}
//findIndex查找是否有重复的
const arr=[
  {name:"张三3",age:12},
  {name:"张三2",age:12},
  {name:"张三",age:12},
  {name:"张三1",age:12}
];
const newArr=arr.map(item=>item.name);
const isRepeat=newArr.some((x,index,arr)=>arr.findIndex(y=>y==x)!=index);
if(isRepeat){
  console.log("重复");
}

 

标签:arr,12,const,name,重复,age,张三,js,数组
From: https://www.cnblogs.com/czhowe/p/16617356.html

相关文章

  • filter 加 indexOf 方法去重数组
    letarr=[1,2,3,4,3,2,3,4,6,7,6]letunique=(arr)=>{console.log(arr)returnarr.filter((item,index)=>{//......
  • js函数节流(Throttle)
    在浏览器DOM事件里面,有一些事件会随着用户的操作不间断触发。比如:重新调整浏览器窗口大小(resize),浏览器页面滚动(scroll),鼠标移动(mousemove),输入框监听(oninput)等。也就是说......
  • 使用自定义注解实现接口防重复提交
    后端实现防重复提交的方式有很多中,大颗粒级别可以使用Redis或nginx,也就是所谓的滑动窗口、令牌桶等,但是这些大颗粒只能实现同一接口同一IP同一用户的重复提交,不能对请......
  • JS中的流程控制
    1.顺序结构 2.分支结构if{}if{}else{}if{}elseif{} 3.三元表达式条件表达式?表达式1(true):表达式2(false) 4.switch(值必须是全相等)switch......
  • 01-React基础(JSX, State, Refs, Props组件交互, Event, 生命周期)
    引入JS#react开发JSreact.development.js#reactdom渲染JSreact-dom.development.js#jsx语法转换JSbabel.min.js#参数传值校验JSprop-types.jsJSX语法#......
  • Java数组(狂神说Java)
    一、数组声明创建与使用首先必须声明数组变量,才能在程序中使用数组。下面是声明数组变量的方法:dataType[]arrayRefVar;//首选的方法dataTypearrayRefVar[];//效......
  • 数组
    publicstaticvoidmain(String[]args){inta[]={1,2,3,4,5};//遍历数组for(inti=0;i<a.length;i++){System.out.println(a[i]);}......
  • 记C# 通过JObject 读取 json对象(Newtonsoft.Json.Linq.JObject.this[string].get 返回
    json对象"RequestHeaders":{ "Host":"tool.kkbmtj.com", "Referer":"https://m.kkbmtj.com/ys/shortindex?origin=kktj&xcx", }代码:HeaderLogheaderLog......
  • JS基础点
    JS的特点解释型语言:不用编译直接运行类似于C和Java的语法结构动态语言:可以保存任意类型的数据基于原型的面向对象script标签js代码需要编写到script标签中......
  • package.json和package-lock.json的区别(转载)
    package.json记录当前项目所依赖模块的版本信息,更新模块时锁定模块的大版本号(版本号的第一位),不能锁定后面的小版本,package-lock.jsonpackage-lock.json是在`npminst......