1.1增加时间复杂度,减少空间复杂度
function unique(arr) {
var t = 0;
var a = 0;//用来保存最后一个重复值的索引号,避免出错
for (var j = 0; j < arr.length - 1; j++) {
if (arr.indexOf(arr[j]) != arr.lastIndexOf(arr[j])) {//如果有重复值
a = arr.lastIndexOf(arr[j]); //保存最后一个重复值的索引号
//交换需删除的值和数组中最后一个值
t = arr[arr.length - 1];
arr[arr.length - 1] = arr[a];
arr[a] = t;
//删除最后一个值
arr.pop();
j--;
}
}
return arr;
}
1.2增加空间复杂度,减少时间复杂度
function unique2(arr) {
var newArr = [];
for(var i = 0; i <arr.length - 1; i++) {//遍历旧数组
if(newArr.indexOf(arr[i]) == -1) {//如果新数组不存在该值,加入
newArr.push(arr[i]);
}
}
return newArr;
}
console.log(unique2(arr));
知识点:
arr.indexOf(参数):返回数组中第一个符合值索引号
arr.lastIndexOf(参数):返回数组中最后一个符合值索引号
如果没有符合的,则返回-1.