JS中去除数组中重复元素的方法
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中去除数组中重复元素的方法相关推荐
- php 数组去除相同元素,php如何去除数组的重复元素
[摘要] PHP即"超文本预处理器",是一种通用开源脚本语言.PHP是在服务器端执行的脚本语言,与C语言类似,是常用的网站编程语言.PHP独特的语法混合了C.Java.Perl以及 ...
- JS JavaScript中去除数组中重复元素的方法
JS JavaScript中去除数组中重复元素的方法 感觉比较好理解的3种方法,总结一下,大家共同学习 方法一: Array.prototype.method1 = function(){ var a ...
- php中去除数组中空值,php如何去除数组中空值
在php中可以使用系统函数"array_filter"去除空值,其语法是"array_filter (参数1,参数2);",此函数是依次将 "参数1& ...
- HTML怎么去除数组的重复元素,js去除数组中重复元素并排序
/p> "http://www.w3.org/TR/html4/strict.dtd"> 003_obj //去掉数组中重复的元素 var arr=[1,2,2,3,3 ...
- Js中去除数组中重复元素的几种方法
方法1: 1 Array.prototype.method1=function(){ 2 var arr=[]; 3 for(var i=0;i<this.length;i++){ 4 if(a ...
- java中去除数组中重复元素的方法
题目 请设计一个方法,将一个int数组arr中重复的元素去除,并且返回新数组newArr. 解法一 保留重复数字中的第一次出现的元素 首先建立一个与原数组等长的标记数组flag[],它的下标与原数组下 ...
- JS实现去除数组中空字符串元素(包括多个空格,undefined,null)
let arr = ['c', '', 'g', null, undefined, 'f', ' ']; let newArr=arr.filter(i=>i && i.trim ...
- java中json重复数据结构_JS实现去除数组中重复json的方法示例
本文实例讲述了JS实现去除数组中重复json的方法.分享给大家供大家参考,具体如下: var array = [{"name":"123"},{"na ...
- js判断数组中重复元素并找出_javascript查找数组中重复元素的方法
这篇文章主要介绍了JS查找数组中重复元素的方法,结合具体实例形式对比分析了javascript针对数组的遍历.判断.排序等相关操作技巧,需要的朋友可以参考下 本文实例讲述了JS查找数组中重复元素的方法 ...
最新文章
- java面向过程和面向对象
- Vue SPA 打包优化实践
- 【深度学习入门到精通系列】U-net网络分析
- Linux PHP增加JSON支持及如何使用JSON
- 解决Matlab Help文档需要登录才能查看的问题
- iview select 怎么清空_在使用iview时发现要先重置一下表单然后填写完后再重置可以清空Select多选框,否则清不掉,什么原因?...
- 作为前端开发,如何高效学习 TypeScript
- 需求分析 应该先写业务还是功能_一个套路,拆解常见数据分析需求
- 谈谈iOS获取调用链
- Asp.net中Js、Css文件压缩辅助类
- (王道408考研数据结构)第七章查找-第四节:哈希表(基本概念及其操作)
- 2017.10.23 卡牌游戏 失败总结
- Prototype对象
- 福建首发互联网监测报告 云计算市场增速迅猛
- 用计算机术语写毕业寄语,大学毕业寄语(精选50句)
- 云服务器搭建Java自动化测试框架
- 使用Eclipse搭建STM32嵌入式开发环境
- IIR 数字滤波器三种结构形式的MATLAB实现
- 完整责任链模式——回旋链
- mariadb无法访问