类似于数组,但是 它的成员都是唯一的 ,其构造函数可以接受一个数组作为参数
<script type="text/javascript">
let array = [1, 1, 1, 1, 2, 3, 4, 4, 5, 3];
let set = new Set(array);
console.log(set); // => Set {1, 2, 3, 4, 5}
</script>
ES6中Array新增了一个静态方法Array.from,可以把类似数组的对象转换为数组,如通过querySelectAll方法得到HTML DOM Node List,以及ES6中新增的Set和Map等可遍历对象
<script type="text/javascript">
let array = Array.from(new Set([1, 1, 1, 2, 3, 2, 4]));
console.log(array); // => [1, 2, 3, 4]
</script>
双for循环去重
<script type="text/javascript">
var ary = [1, 3, 2, 3, 2, 3, 1, 2, 2, 3, 1, 1, 1];
for (var i = 0; i < ary.length; i++) {
var cur = ary[i];
for (var j = i + 1; j < ary.length; j++) {
if (cur === ary[j]) {
ary.splice(j, 1);
j--;
}
}
}
console.log(ary); // => [1, 3, 2]
</script>
双for循环去重,if{}else{}写法
<script type="text/javascript">
var ary = [1, 2, 3, 2, 3, 4, 4];
for (var i = 0; i < ary.length; i++) {
var cur = ary[i];
for (var j = i + 1; j < ary.length;) {
if (cur === ary[j]) {
ary.splice(j, 1);
} else {
j++;
}
}
}
console.log(ary) // => [1, 2, 3, 4]
</script>
双for循环三元运算写法
<script type="text/javascript">
var ary = [3, 4, 4, 5, 6, 5, 6, 6, 3, 3, 5];
for (var i = 0; i < ary.length; i++) {
var cur = ary[i];
for (var j = i + 1; j < ary.length;) {
cur === ary[j] ? ary.splice(j, 1) : j++;
}
}
console.log(ary) // => [3, 4, 5, 6]
</script>
网友评论