js数组去重的几种方法

js数组去重的几种方法

js数组去重的几种方法。

使用flag

如果数组元素都是自然数,可以利用数组key都为自然数的特性,value记录对应的key是否已经存在于数组中。

1
2
3
4
5
6
7
8
9
10
11
12
var source = [1, 2, 3, 2, 4, 6, 3];
var flags = [];

for (let i = 0; i < source.length; i++) {
if (flags[source[i]]) {
// 删除该元素
source.splice(i, 1);
} else {
flags[source[i]] = true;
}

}

利用indexOf()构造只有唯一值数组

1
2
3
4
5
6
7
8
var source = [1, 2, 3, 2, 4, 6, 3];
var target = [];

for (let i = 0; i < source.length; i++) {
if (target.indexOf(source[i]) === -1) {
target.push(source[i]);
}
}

filter()配合indexOf()

1
2
3
4
5
6
7
8
var source = [1, 2, 3, 2, 4, 6, 3];
var target = [];

target = source.filter(
(value, index) => {
return source.indexOf(value) == index;
}
);

Set()和扩展运算符

Set 是es6新提供的数据类型,它是没有重复值的类数组。
Set 转化为数组需要通过 [...new Set(arr)]

1
2
var source = [1, 2, 3, 2, 4, 6, 3];
const target = [...new Set(source)];

评论