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

第一种方法:使用数组中的splice方法

splice():删除元素,并向数组添加新元素,并返回被删除的元素

function f1(){var _arr=[8,5,0,3,1,8,5,0,3,1,8,8,8,5,2,2,2];for(n=0;n<_arr.length-1;n++){//循环数组的所有元素for(i=n+1; i<_arr.length;i++){//拿下标为n的元素和它后面的所有元素进行比较if(_arr[n]==_arr[i]){//如果第i位上的元素和第n上的元素相等就删除_arr.splice(i--,1);//使用splice方法删除重复的元素/**使用i--的原因*splice()方法两个参数的含义:*第一个参数是从下标为多少的位置开始*第二个参数是从开始的位置往后删除几个元素*例如splice(1,2)就是从下标为1的地方开始向后删除2个元素*使用i--是因为:*用第一个8为例,当它和i=5位置上的8相比较时,数值相等,就需要进行删除,*_arr.splice(i--,1)是先执行_arr.splice(i,1),然后i再进行--的(因为右--不参加本次运算,本次运算结束后i才会自减1)*删除第一个8时是_arr.splice(5,1)把下标为5的位置上的8删除,然后这个下标就会空出来,后面的数会向前移动*也就是下标5上面此时会变成后面一位的数值5,i--后i变成4然后去执行for循环里的i++再次变为5,再用下标5上的数和8进行比较*如果不进行i--,i就是5然后再去执行for循环里的i++会变成6,等于就把下标为5上的数给漏掉了,也就是没有用5和8进行比较*/}}}console.log(_arr);//输出[8,5,0,3,1,2]}f1();
第二种方法:使用indexOf()

indexOf():用来检测指定的子字符串值在字符串中首次出现的位置,

这种方法较简单,但是低版本浏览器可能不兼容indexOf()方法

indexOf()方法如果要检索的字符串没有出现,则返回-1

function f2(){var _arr=[8,5,0,3,1,8,5,0,3,1,8,8,8,5,2,2,2];var _empty=[];//声明一个空数组for(n=0;n<_arr.length;n++){//循环_arr数组中元素//判断_empty数组中是否有_arr数组中的第n个元素,小于0就是没有//如果没有就把这个元素添加到_empty数组中if(_empty.indexOf(_arr[n])<0){_empty.push(_arr[n]);//push()也是数组中的一个方法,用来向数组的末尾添加元素}}_arr=_empty;//把数组_arr赋值为_empty,也可以直接输出_emptyconsole.log(_arr);//输出[8,5,0,3,1,2]}f2();
第三种方法:兼容第二种写法
function f3(){var _arr=[8,5,0,3,1,8,5,0,3,1,8,8,8,5,2,2,2];var _empty=[];var _flag=0;//声明一个变量用来做标记,初始值为0for(n=0; n<_arr.length; n++){//循环_arr数组for(i=0; i<_empty.length; i++){//循环数组_empty//使_arr中的第n个元素和_empty中的每一个元素进行比较if(_arr[n]==_empty[i]){_flag=1;//如果_arr中第n个元素和_empty中的某个元素相等,就给标记_flag赋值为1break;//如果有一个相等的就可以结束循环了}}if(_flag==0){//如果_flag==0,即_arr数组中的元素和_empty中的每个元素都不相等_empty.push(_arr[n]);//把这个元素添加到_empty中}_flag=0;//每次对_empty循环完毕都需要把标记_flag的值初始为0}_arr=_empty;//把_empty赋值给_arr,也可以直接打印_emptyconsole.log(_arr);//输出[8,5,0,3,1,2]}f3();
第四种方法:使用字面量对象:利用字面量对象中的键是唯一的特性
function f4(){var _arr=[8,5,0,3,1,8,5,0,3,1,8,8,8,5,2,2,2]; var _obj={};//声明一个字面量对象for(n=0;n<_arr.length;n++){//循环_arr数组中的元素_obj[_arr[n]]=_arr[n];//_obj[_arr[n]]意思是给字面量对象_obj添加一个属性_arr[n]//_obj[_arr[n]]=_arr[n]是把_arr[n]赋值给属性_arr[n]//例如n=0时,_obj[arr[0]]=_arr[n]就是在字面量对象中添加了一个键值对//_obj={8:8},然后当循环到第二个8时,由于字面量对象中只能有一个键是8,所以会覆盖前面与它相同的键}var _temp=[];//声明一个空数组for(var k in _obj){//遍历字面量对象_obj中的属性并赋值给k_temp.push(_obj[k]);//通过_obj[k]访问_obj中属性k的值,然后放进空数组}console.log(_temp);}f4();

JS中去除数组中重复元素的方法相关推荐

  1. php 数组去除相同元素,php如何去除数组的重复元素

    [摘要] PHP即"超文本预处理器",是一种通用开源脚本语言.PHP是在服务器端执行的脚本语言,与C语言类似,是常用的网站编程语言.PHP独特的语法混合了C.Java.Perl以及 ...

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

    JS JavaScript中去除数组中重复元素的方法 感觉比较好理解的3种方法,总结一下,大家共同学习 方法一: Array.prototype.method1 = function(){ var a ...

  3. php中去除数组中空值,php如何去除数组中空值

    在php中可以使用系统函数"array_filter"去除空值,其语法是"array_filter (参数1,参数2);",此函数是依次将 "参数1& ...

  4. HTML怎么去除数组的重复元素,js去除数组中重复元素并排序

    /p> "http://www.w3.org/TR/html4/strict.dtd"> 003_obj //去掉数组中重复的元素 var arr=[1,2,2,3,3 ...

  5. Js中去除数组中重复元素的几种方法

    方法1: 1 Array.prototype.method1=function(){ 2 var arr=[]; 3 for(var i=0;i<this.length;i++){ 4 if(a ...

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

    题目 请设计一个方法,将一个int数组arr中重复的元素去除,并且返回新数组newArr. 解法一 保留重复数字中的第一次出现的元素 首先建立一个与原数组等长的标记数组flag[],它的下标与原数组下 ...

  7. JS实现去除数组中空字符串元素(包括多个空格,undefined,null)

    let arr = ['c', '', 'g', null, undefined, 'f', ' ']; let newArr=arr.filter(i=>i && i.trim ...

  8. java中json重复数据结构_JS实现去除数组中重复json的方法示例

    本文实例讲述了JS实现去除数组中重复json的方法.分享给大家供大家参考,具体如下: var array = [{"name":"123"},{"na ...

  9. js判断数组中重复元素并找出_javascript查找数组中重复元素的方法

    这篇文章主要介绍了JS查找数组中重复元素的方法,结合具体实例形式对比分析了javascript针对数组的遍历.判断.排序等相关操作技巧,需要的朋友可以参考下 本文实例讲述了JS查找数组中重复元素的方法 ...

最新文章

  1. java面向过程和面向对象
  2. Vue SPA 打包优化实践
  3. 【深度学习入门到精通系列】U-net网络分析
  4. Linux PHP增加JSON支持及如何使用JSON
  5. 解决Matlab Help文档需要登录才能查看的问题
  6. iview select 怎么清空_在使用iview时发现要先重置一下表单然后填写完后再重置可以清空Select多选框,否则清不掉,什么原因?...
  7. 作为前端开发,如何高效学习 TypeScript
  8. 需求分析 应该先写业务还是功能_一个套路,拆解常见数据分析需求
  9. 谈谈iOS获取调用链
  10. Asp.net中Js、Css文件压缩辅助类
  11. (王道408考研数据结构)第七章查找-第四节:哈希表(基本概念及其操作)
  12. 2017.10.23 卡牌游戏 失败总结
  13. Prototype对象
  14. 福建首发互联网监测报告 云计算市场增速迅猛
  15. 用计算机术语写毕业寄语,大学毕业寄语(精选50句)
  16. 云服务器搭建Java自动化测试框架
  17. 使用Eclipse搭建STM32嵌入式开发环境
  18. IIR 数字滤波器三种结构形式的MATLAB实现
  19. 完整责任链模式——回旋链
  20. mariadb无法访问

热门文章

  1. Linux Centos中卸载 安装Mysql
  2. 频谱图matlab找文件路径,光学图像识别相关器的MATLAB仿真
  3. postman中添加sessionID
  4. 美食杰 菜谱详情(效果介绍)
  5. java 自动拆箱_Java中的自动装箱拆箱
  6. 【董天一】如何在IPFS里面上传一张图片
  7. 集合和数组的相互转换
  8. 【笔记】tomcat原理
  9. hi nova 9z参数 hi nova 9z评测
  10. Unity 协程探究