数组去重
第一种方法:先对数组进行排序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];
if(obj[cur]){
ary.splice(i,
1);
i--;
}
else{
obj[cur]=cur;
}
}
第五种方法:也是利用对象不重名的方法,但是这次是直接计算其数组各个数的重复次数,
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=[];
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 = [];
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]);
转载请注明原文地址: https://ju.6miu.com/read-13799.html