i=0 第一次循环  开始比较的索引是1到末尾
i=1 第二次循环  开始比较的索引是2到末尾
开始比较的索引 是i+1
数组塌陷:通过splice删除,原有的数组改变了,删除的那个索引以后的所有项的索引

第一种方法:2个for循环实现

<script>
var ary=[1,2,3,4,4,3,2,2,3,3,3,4,4,1,1,4,5,6,6];
for (var i=0;i<ary.length-1;i++){
var cur=ary[i]
for(var j=i+1;j<ary.length;j++){
if(cur==ary[j]){
ary.splice(j,1);
j--;
}
}
}
console.log(ary)
</script>

第二种方法:一个for循环实现,利用对象是属性名不能相等的原理做的。

<script>
var ary = [1,"1",1,37,86,1,45,37,86,86,45,23,34];
var obj = {};
for (var i = 0; i < ary.length; i++) {
var cur = ary[i];
if (obj[cur] == cur) {
ary.splice(i, 1);
i--;
continue;
}
obj[cur] = cur;
}
obj = null;
console.log(ary);
</script>

原理:

把数组中的每一项,当做一个新对象的属性名和属性值存起来,在存储的时候,判断当前的属性名是否已经存在,存在了就代表数组该项重复了,我们直接的删除,否则就代表不重复,我们直接存储就好了

 

数组的去重+排序””:

<script>
var ary = [1, 45, 37, 86, 1, 45, 37, 86, 86, 45, 23, 34],;
var obj = {};
for (var i = 0; i < ary.length; i++) {
var cur = ary[i];
obj[cur] = cur;
}
ary.splice(0, ary.length);//ary.length=0
for (var key in obj) {
ary.push(obj[key]);
}
obj = null;
console.log(ary);
</script>

 

 

 

 

 

 

 

··············