思路:
1.先将数组去重,取出去重元素,放在新建的空数组中 ,也就是这里: if (tempArr.indexOf(arr[i]) == -1)
2. else if (tempArr.indexOf(arr[i])>=0),继续循环重复元素,根据筛选出来的去重数组对比,如果有重复的就将先前的元素删掉,添加下一次出来的重复元素,以及对应下标。
3.以此类推找到最后一个重复的元素,即保留下标最大的那个
var arr = [15,12,11, 28, 11, 11, 28, 28, 28, 29, 29, 29, 11];
var tempArr = [];
var indexArr= [];
for (var i = 0; i < arr.length; i++) {
if (tempArr.indexOf(arr[i]) == -1) {
tempArr.push(arr[i]);
indexArr.push(i)
} else if (tempArr.indexOf(arr[i])>=0){
for(var j = 0;j<tempArr.length;j++){
if (tempArr[j] == arr[i]) {
tempArr.splice(j, 1, tempArr[j]);
indexArr.splice(j, 1, i);
}
}
}
}
console.log('去重',tempArr,indexArr)
结果:
tempArr:[15, 12, 11, 28, 29]
indexArr:[0, 1, 12, 8, 11]
方法二:
var arr = [15,12,11, 28, 11, 11, 28, 28, 28, 29, 29, 29, 11];
var data = [];
for(var i = 0;i<arr.length;i++){
var newTag = false;
if(data.length > 0){
for(var z = 0;z < data.length;z++){
if(arr[i] == data[z]){
newTag = true;
}
if(z == data.length - 1 && !newTag){
data.push(arr[i]);
}
}
}else{
data.push(arr[i])
}
}
console.log('去重', data)
var tapArr = [];
for(var i = 0;i<data.length;i++){
var tag = 0;
for(var j = 0;j<arr.length;j++){
if(data[i] == arr[j]){
tag = j;
}
if(j == arr.length - 1){
tapArr.push(tag)
}
}
}
console.log('去重:::',tapArr)
网友评论