//第一種方法
var arr = [1, 1, 1, 2, 3, 4, 1, 3, 6, 7, 3, 5]; //聲明一個含有重復值得數組
function norepeat(arr) {//創建norepeat函數
for (var i = 0; i < arr.length; i++) {//遍歷數組
for (var j = i + 1; j < arr.length; j++) {//i分別於i+1和后面的依次進行比較
if (arr[i] == arr[j]) {//如果相等,刪除j中的那個值
arr.splice(j, 1);
j--; //防止第三個及以后的重復的忽略而沒有進行比較
}
}
}
return arr;
}
console.log(norepeat(arr));
//第二種方法
var arr = [1, 1, 1, 2, 3, 4, 1, 3, 6, 7, 3, 5];
arr.sort();
for (var i = 0; i < arr.length - 1; i++) {
if (arr[i] == arr[i + 1]) {
arr.splice(i + 1, 1);
i--;
}
}
console.log(arr);
//方法三:把數組看成一個對象去重
var arr = [1, 1, 1, 2, 3, 4, 1, 3, 6, 7, 3, 5];
function norepeat(arr) {
var obj = {};//聲明一個空對象
var newArr = [];//聲明一個空數組,用來存放數組中去重后的值
for (var i = 0; i < arr.length; i++) {//遍歷數組
if (obj[arr[i]] == undefined) {//如果對象中沒有這個元素
newArr.push(arr[i]);//空數組中加入這個元素
obj[arr[i]] = 1;//對象這個元素賦值
}
}
return newArr;//返回新數組的值
}
console.log(norepeat(arr));
//方法四:indexOf屬性來判斷
var arr = [1, 1, 1, 2, 3, 4, 1, 3, 6, 7, 3, 5];
var newArr = [];//聲明一個空數組
function norepeat(arr) {
for (var i = 0; i < arr.length; i++) {//遍歷數組
if (newArr.indexOf(arr[i]) == -1) {//用indexOf判斷,沒有就加入arr[i]的值
newArr.push(arr[i]);
}
}
return newArr;
}
console.log(norepeat(arr));