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)); }
let arr = [1,2,3,3,2,4,5]; let list = new Set(arr); console.log("list",list); // 1,2,3,4,5
可是对于数据的数据类型是不会进行转换的,因此必定要注意元素的数据类型是不是一致面试
找出此次考试中,最高分,及最高分出现的次数数组
//思路:所有人的成绩是一个数组,这就至关于使用数组去重的方法,找到最高的分数,和其次数,首先找到了去重的数组进行从小到大的排序,获得次数,而后经过最高分所对应的索引值获得出现的最高分 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]);