数组去重的方法
来源:互联网 发布:淘宝ued 前后端分离 编辑:程序博客网 时间:2024/04/28 02:19
数组去重
- 第一种方法:
- 先对数组进行排序
sort()
,排好序,然后把数组的当前项和后一项进行比较,相同则使用数组的splice(相同的位置,1)
,但是为了防止数组塌陷,每次删除数组元素的时候要把i
的值减一。
var ary=[1,23,4,2,33,1,2,44,3,2,3] ary.sort(function(a,b){ return a-b; });//返回的是排好序的数组 for(var i=0;i<ary.length;i++){ if(ary[i]===ary[i+1]) { ary.splice(i,1); i--;//为了防止数组塌陷 } }
- 第二种方法是:建立一个新数组,要是原数组里面的数是头一次出现(使用数组的
indexOf()
),那么就把这个数放到新数组里面,否者就抛弃这个数,类似于前面说的随机验证码
var ary=[1,23,4,2,33,1,2,44,3,2,3]var arr2=[];for(var i=0;i<ary.length;i++){if(arr2.indexOf(art[i])==-1){arr2.push(ary[i]);}}
- 第三种方法:直接拿当前项与后一项进行比较,相同的要删除,使用数组
splice()
进行删除,这里也要防止数组塌陷;
var ary=[1,23,4,2,33,1,2,44,3,2,3]for(var i=0;i<ary.length;i++){for(var j=i+1;j<ary.length;j++){if(ary[i]===ary[j]){ary.splice(j,1);j--;}}}
- 第四种方法:利用对象不重名的特性,对象的存储是键值对方式,要获取属性值,要通过对象
./[]
属性来获取;相同则删除,也要防止数组塌陷
var ary=[1,23,4,2,33,1,2,44,3,2,3]//新建一个对象var obj={};for(var i=0;i<ary.length;i++){var cur=ary[i];//如果obj【cur】为真,那就说明对象里面找到了这个数,重复了if(obj[cur]){ary.splice(i,1);i--;}else{//给对象赋值 说明obj.xxx=undefined 不存在为假obj[cur]=cur;//obj【1】=1;}}
- 第五种方法:也是利用对象不重名的方法,但是这次是直接计算其数组各个数的重复次数,
var ary=[1,23,4,2,33,1,2,44,3,2,3]var obj={};for(var i=0;i<ary.length;i++){ var cur=ary[i]; if(obj[cur]){ //每次重复一次,其对应的值加一 obj[cur]++;}else{//说明没有重复,个数只有一个obj[cur]=1;}}var ary2=[];//对于对象使用in 方法进行遍历,遍历获取的是属性值for(var attr in obj){ ary2.push(Number(attr));}
数组去重的面试题:
找出这次考试中,最高分,及最高分出现的次数
//思路:全部人的成绩是一个数组,这就相当于使用数组去重的方法,找到最高的分数,和其次数,首先找到了去重的数组进行从小到大的排序,得到次数,然后通过最高分所对应的索引值得到出现的最高分var ary = [1, 23, 4, 2, 33, 1, 2, 44, 3, 2, 3]; var obj = {}; for(var i = 0; i < ary.length; i++) { //把数组的值,当作对象的索引赋值给对象,所以通过对象索引获取的是数组出现的次数 var cur = ary[i]; if(obj[cur]) { //每次重复一次,其对应的值加一 obj[cur]++; } else { //说明没有重复,个数只有一个 obj[cur] = 1; } } //分数从低到高出现的次数 console.log(obj); var ary2 = []; //对于对象使用in 方法进行遍历,遍历获取的是属性值 for(var attr in obj) { ary2.push(Number(attr)); } console.log(ary2); //最高分 console.log(ary2[ary2.length-1]); var count=ary2[ary2.length-1]; //最高分出现的次数 console.log(obj[count]);
0 0
- 数组去重的方法
- 数组 去重的方法
- 数组去重的方法
- 数组去重的方法
- 数组去重的方法
- 数组去重的方法
- 数组去重方法
- js数组去重的最快方法
- js数组去重的四个方法
- 数组去重的四种方法
- JavaScript 数组去重的常见方法!
- 数组去重的两种方法
- 数组去重的三种方法
- js数组去重的方法
- JavaScript数组去重的原型方法
- JS-数组去重的方法总结
- 不同方法数组去重的比较
- 数组去重的五种方法
- C程序下的三子棋
- C语言字节对齐
- c语言编程题
- POJ NOI MATH-7827 质数的和与积(Bailian4138)
- java 蓝桥杯 递归求最长子序列(填空题)
- 数组去重的方法
- SDUT 2562 相似三角形 JAVA
- 圆形 矩形
- webpack 教程
- 学习笔记--nmap常见命令
- 导弹拦截(最长下(升)降子序列 dp)
- Linux内核介绍
- 工厂设计模式
- 在Ubuntu14.04和Python3.4-3.6环境中,matplotlib不显示图像的问题的解决方法