数组去重是笔试中经常见到的题目,方法也很多,下面是我可以想到的一些方法
方法一:新建一个新数组,如果新数组中没有要去重数组中的值就放到新数组中
function
unique1(arr)
{
var
newArr=[]
for
(var
i =
0;
i <
arr.length;
i++)
{
if
(newArr.indexOf(arr[i])
== -1)
{
newArr.push(arr[i])
}
}
return
newArr
}
对于方法一的一种改进
function
unique1(arr)
{
var
new1 =
[];
arr.map(function
(v)
{
if
(new1.indexOf(v)
=== -1)
{
new1.push(v)
}
})
return
new1
}
方法二:使用splice()方法,如果数组中一个值与数组中的其他值相等,那么就去掉后值。注意splice()可以修改原数组
function
unique2(arr)
{
for
(var
i =
0;
i <
arr.length;
i++)
{
for
(var
j =
i +
1;
j <
arr.length;
j++)
{
if
(arr[i]
=== arr[j]){
arr.splice(j,
1);
}
}
}
return
arr;
}
方法三:filter本身不修改数组,会自动遍历数组,如果item对应的indexOf索引值与item本身index索引值相等,返回ture;否则返回false,去掉重复值,那么arr就剩下不重复的了
function
test(arr)
{
return
arr.filter(function
(item,
index,
array)
{
return
array.indexOf(item)
=== index;
});
}
方法四:使用ES6的方法
function unique(arr){
return Array.from(new Set(arr));
}