数组去重

2019-07-18 20:19:56 +08:00
 wenjay

数组去重

 Array.prototype.unique1 = function () {
   var n = []; //一个新的临时数组
   for (var i = 0; i < this.length; i++) //遍历当前数组
   {
     if (n.indexOf(this[i]) == -1) n.push(this[i]);
   }
   return n
}
6406 次点击
所在节点    JavaScript
49 条回复
zhao7399686
2019-07-18 20:23:03 +08:00
?
NewDraw
2019-07-18 20:27:56 +08:00
这代码是在养蛊啊!
AlloVince
2019-07-18 20:31:27 +08:00
``` js
Array.from(new Set(inputArray));
```
wenjay
2019-07-18 20:35:51 +08:00
发出去的文章不能修改的吗?
wunonglin
2019-07-18 20:37:12 +08:00
wenjay
2019-07-18 20:37:19 +08:00
@AlloVince ES6 就是如此简单,不过面试老喜欢问这个问题,要如何回答才能显得高级呢😂
Yumwey
2019-07-18 20:48:49 +08:00
用 filter 一行就写完了
starsriver
2019-07-18 20:58:19 +08:00
es6 new 的 array 自动去重。
wenjay
2019-07-18 21:02:19 +08:00
lihongjie0209
2019-07-18 21:09:12 +08:00
数据结构没学好?
xingyue
2019-07-18 21:31:29 +08:00
我这是要完犊子了吗,看了半天没觉得有什么问题.....除了代码啰嗦了点。再看看 #1 #2 #10,现在内心慌的一.....
taogen
2019-07-18 21:41:33 +08:00
就说算法的时间复杂度为 O(n^2),空间复杂度为 O(n)。高级否?
taogen
2019-07-18 21:49:44 +08:00
另外,用 hash table 作为中间容器,时间复杂度可以为 O(n)
oIMOo
2019-07-18 22:55:24 +08:00
转成 set 再转回 list 怎么样?
lynnic
2019-07-18 23:01:30 +08:00
时间复杂度为啥是 n 方?
necomancer
2019-07-18 23:07:05 +08:00
@lynnic indexof 是 o(n) 的吧
kyuuseiryuu
2019-07-18 23:54:09 +08:00
@necomancer 外面还有一层 n🤣
serenader
2019-07-19 00:04:42 +08:00
LZ 的这个方法有个 bug,无法去重 NaN 以及 {} 。

几年前我写过一篇文章,也是讲去重的:blog.serenader.me/javascript-shu-zu-qu-zhong/

不过刚刚看了一下,我文章里面最后给出的方案也有 bug。。纯粹当抛砖引玉了,看看大家能找到几个 bug 🤣🤣
indomi
2019-07-19 00:26:16 +08:00
[...new Set(arr)]
bumz
2019-07-19 09:15:41 +08:00
ES6 之前就手写一哈希表,高级吗,手动狗头

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/584224

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX