//第一种方法
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));