我是靠谱客的博主 殷勤小蚂蚁,这篇文章主要介绍javascript数组去重怎么做,现在分享给大家,希望可以做个参考。

本教程操作环境:windows7系统、javascript1.8.5版、Dell G3电脑。

方法1:[…new Set(arr)]

复制代码
1
2
const arr = [1, 2, 3, 2, 3]; [...new Set(arr)]; // [1, 2, 3]
登录后复制

方法2:Array.from(new Set(arr))

复制代码
1
2
const arr = [1, 2, 3, 2, 3]; Array.from(new Set(arr)); // [1, 2, 3]
登录后复制

由于 Set 中的元素是唯一的,无论是原始值或者是对象引用,所以可以通过将数组转换成 Set 对象来实现去重

Array.from方法可以将 Set 对象转换成数组。

方法3:利用filter+ indexOf

复制代码
1
2
3
4
5
6
7
8
9
function unique(arr) { return arr.filter(function(item, index, arr) { //当前元素,在原始数组中的第一个索引==当前索引值,否则返回当前元素 return arr.indexOf(item, 0) === index; }); } var arr = [1,1,'true','true',true,true,15,15,false,false, undefined,undefined, null,null, NaN, NaN,'NaN', 0, 0, 'a', 'a',{},{}]; console.log(unique(arr)) //[1, "true", true, 15, false, undefined, null, "NaN", 0, "a", {…}, {…}]
登录后复制

方法4:双重 for 循环

最容易理解的方法,外层循环遍历元素,内层循环检查是否重复

当有重复值的时候,可以使用 push(),也可以使用 splice()

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
function distinct(a, b) { let arr = a.concat(b); for (let i=0, len=arr.length; i<len; i++) { for (let j=i+1; j<len; j++) { if (arr[i] == arr[j]) { arr.splice(j, 1); // splice 会改变数组长度,所以要将数组长度 len 和下标 j 减一 len--; j--; } } } return arr }
登录后复制

但这种方法占用的内存较高,效率也是最低的

1.png

方法5:for...of + includes()

双重for循环的升级版,外层用 for...of 语句替换 for 循环,把内层循环改为 includes()

先创建一个空数组,当 includes() 返回 false 的时候,就将该元素 push 到空数组中

类似的,还可以用 indexOf() 来替代 includes()

复制代码
1
2
3
4
5
6
7
8
function distinct(a, b) { let arr = a.concat(b) let result = [] for (let i of arr) { !result.includes(i) && result.push(i) } return result }
登录后复制

2.png

【推荐学习:javascript高级教程】

以上就是javascript数组去重怎么做的详细内容,更多请关注靠谱客其它相关文章!

最后

以上就是殷勤小蚂蚁最近收集整理的关于javascript数组去重怎么做的全部内容,更多相关javascript数组去重怎么做内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(108)

评论列表共有 0 条评论

立即
投稿
返回
顶部