JS js实现数组去重的方法,字符串同样可以用

  • 一.new Set
  • 二.创新数组查询判断加入
  • 三.原数组前后查询比较删除
  • 四.双重for循环遍历去重
  • 五.利用对象不能存储重复属性的特点
    • 方法1: 循环遍历对象
    • 方法二:遍历数组,将其作为键名存入对象中,对对象中键名的进行判断,当其内容不在对象中时,将其存入,并将其存入新数组中.
  • 字符串去重

一.new Set

set数据类型不允许有重复数据,会自动清除重复数据;
通过合并展开运算符…对set类型转化为数组操作.

var arr=[1,2,3,1,2,3,1,2,3];
var set=new Set(arr);
newArr=[...set];
console.log(newArr);

二.创新数组查询判断加入

创建一个新数组,是一个空数组[]
循环遍历原始数组
将 原始数组的数据 通过 数组.push() 方法 写入到新数组中;
使用 indexOf 在 新数组中 查询要写入的数组数据;
如果 结果是 -1 证明 新数组中没有原始数组的数据;
再触发执行写入操作.

var arr=[1,2,3,1,2,3,1,2,3];var new1=[];for(i=0;i<=arr.length-1;i++){if(new1.indexOf(arr[i])===-1){new1.push(arr[i]);}}document.write( new1 );

三.原数组前后查询比较删除

遍历数组,分别查询第一次出现该元素的索引下标,以及最后一次出现该元素的索引下标;
比较两个下标大小是否相等,如果相等,说明该元素无重;
如果不等则说明有重复,则去掉后出现的,并且为了防止数组塌陷,对循环变量进行处理;

var arr=[1,2,3,1,2,3,1,2,3];for(i=0;i<=arr.length-1;i++){var a=arr.indexOf(arr[i]);var b=arr.lastIndexOf(arr[i]);if(a===b){continue;}else{arr.splice(b,1);i--;}}document.write( arr );

四.双重for循环遍历去重

每次循环 是 当前循环单元 和 之后的所有单元进行比较;
如果 起始单元的数据 和 之后单元的数据 相同 删除 之后单元的数据;

1, 外层循环 从第一个单元 至 倒数第二个单元
2, 内层循环 从 当前循环起始单元的下一个单元 至 最后一个单元
3, 如果 当前循环起始单元存储的数据 和 之后循环单元存储的数据相同
删除 之后循环的单元

var arr = [1, 2, 3, 1, 2, 3, 1, 2, 3];for (j = 0; j <= arr.length - 1; j++) {for (i = j + 1; i < arr.length; i++) {if (arr[j] === arr[i]) {arr.splice(i, 1);i--;}}};
console.log(arr);

五.利用对象不能存储重复属性的特点

方法1: 循环遍历对象

1, 创建一个空对象 创建一个空数组
2, 循环遍历数组
将 数组单元的数据 作为 对象的属性 新增对象的单元
存储的数据是任意什么数据都可以
3, 循环遍历对象 将 对象的属性作为数据 存储到空数组中
数组.push()

 var arr = [1, 2, 3, 1, 2, 3, 1, 2, 3];var obj = {};var arr2=[];for(i=0;i<arr.length;i++){obj[arr[i]]=1;}for(value in obj){arr2.push(value*1);//转化为数值类型写入新数组}console.log(arr2);

方法二:遍历数组,将其作为键名存入对象中,对对象中键名的进行判断,当其内容不在对象中时,将其存入,并将其存入新数组中.

var arr = [1, 2, 3, 1, 2, 3, 1, 2, 3];var obj = {};var arr2=[];for(i=0;i<arr.length;i++){if(!(obj[arr[i]])){//当obj中没有arr[i]时,obj[arr[i]]===undefined;转化为布尔值为false,前面加个非判断符!转为true(即当obj中没有arr[i]时,进行写入新数组的操作)obj[arr[i]]=1;arr2.push(arr[i]);}}console.log(arr2);

字符串去重

由于字符串可以直接转为数组,去重后,再转为字符串.所以前几种方法,均可用
转化方法:

var str=`123456123456`;
var arr=str.split('');
//此处为去重方法
var obj = {};
var arr2=[];for(i=0;i<arr.length;i++){if(!(obj[arr[i]])){obj[arr[i]]=1;arr2.push(arr[i]);}}
//以上为去重方法
var newStr=arr2.join();
console.log(newStr);

JS js实现数组以及字符串去重的方法相关推荐

  1. js中的数组和字符串的一些方法

    数组的一些方法: 1.join()和split()方法 <script type="text/javascript"> var x; var a=new Array() ...

  2. 数组,字符串去重 ES6方法

    该方法是使用ES6 set方法,它类似于数组,但是成员的值都是唯一的,没有重复的值. 但它本身就是一个数据结构:set数据结构,所以数据需要使用扩展运算符把set数据转换成数组的形式.同样字符转需要使 ...

  3. js中json数组 和 字符串 互转

    js中json数组 和 字符串 互转 const jsonStr1 = JSON.stringify( res.responseObject); //json转字符串.//const area = J ...

  4. js之遍历数组、字符串

    js之遍历数组.字符串 1.遍历数组 <!DOCTYPE html> <html lang="en"> <head><meta chars ...

  5. js中给数组中对象去重

    被问到如何给数组中对象去重,想到set答案肯定错误的,这个平时工作中用到的不多,查阅资料,找到给数组中对象去重的方法,利用对象属性名的唯一性,怪自己当时没想到. 方法一: let ary=[{id: ...

  6. JS中去除数组中重复元素的方法

    JS中去除数组中重复元素的方法 第一种方法:使用数组中的splice方法 splice():删除元素,并向数组添加新元素,并返回被删除的元素 function f1(){var _arr=[8,5,0 ...

  7. js中的数组Array定义与sort方法使用示例

    js中的数组Array定义与sort方法使用示例 Array的定义及sort方法使用示例 Array数组相当于java中的ArrayList  定义方法:  1:使用new Array(5  )创建数 ...

  8. php数组去重并重新排序,php数组去重_php对数组中字符串去重并排序例子

    摘要 腾兴网为您分享:php对数组中字符串去重并排序例子,智慧大学,长沙银行,愈加,虚拟机等软件知识,以及掌盟,爱情测试打分,7150f打印机驱动,e洗车,报时闹钟,套图,音影风暴,连环夺宝,看门狗2 ...

  9. JS中的数组和字符串

    1.Array对象用于定义数组 //方式一var arr=new Array(1,2,3);alert(arr);//方式二 var arr=[1,2,3]; alert(arr); //特点:JS数 ...

最新文章

  1. memcacheq 服务安装与原理
  2. 思科将在网络中融入人工智能和机器学习
  3. 控制器框架Struts与策略模式那点事
  4. 封装运动框架多个属性
  5. JQuery绑定事件 时如何传递参数
  6. java字符串10_排名前10的Java字符串问题
  7. android 如何拖动控件的实现
  8. java gc log调优_Java 开启 gc 日志
  9. OS X下使用OpenGL做离屏渲染
  10. Thunder团队第三周 - Scrum会议6
  11. 鸿蒙系统和你,鸿蒙系统面世,但与您所想的不一样
  12. PPC WM5 输入法屏蔽插件
  13. docker打包镜像(实用版)
  14. 记一次使用verdaccio 搭建本地私有npm服务器
  15. 下次面试再一上来就问我线程有哪些状态,我上去就是给他一 jio
  16. 3D真人手办,做一个迷你版的自己
  17. 【人工智能】人工智能的概况(绪论)
  18. rj45 千兆接口定义_rj45接口定义,大神教你秒懂rj45的接线方法【详细方法】
  19. 使用XXLjob中间件进行定时任务的管理
  20. 查看百度CUID方法

热门文章

  1. Android之PopupMenu
  2. Java 位运算(移位、位与、或、异或、非)
  3. 2021-07-26FIL价格跌破50U了,FIL还有戏吗?
  4. ④开启shift后门实验报告
  5. 距离2008北京奥运会开幕倒计时网页特效[js]
  6. MySQL导入数据库脚本
  7. java排查死锁_Java死锁的排查和解决方案
  8. Qt中常用的控件详细介绍
  9. 简述 osi七层模型
  10. android要学什么,android入门要学什么 应该做哪些学习准备