数组去重

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
}
6432 次点击
所在节点    JavaScript
49 条回复
Laumm
2019-07-19 16:04:39 +08:00
感觉最简单就是放 Set 里了
arnoldxiao
2019-07-19 16:14:21 +08:00
用 Set 含一下再放回去
fengdechoulian
2019-07-19 16:22:34 +08:00
@arnoldxiao 仰望高端玩家
doing1
2019-07-19 16:45:37 +08:00
我服了
Aoerz
2019-07-19 17:00:07 +08:00
@Laumm 是的,把排序这茬给忘了
DRcoding
2019-07-19 18:19:12 +08:00
所谓的 filter
var r = ['aa','bb','cc','bb'].filter(function (ele, index, self) {
return self.indexOf(ele) === index;
});
console.log(r.toString());
ChiangDi
2019-07-19 18:30:20 +08:00
不能先排序吧,数组里可能有数字可能有字符串或者其它任何东西
YouMoeYi
2019-07-19 18:50:31 +08:00
为啥不用 Set
function arr_dr (arr){
let st = new Set(arr);
return [...st];
}
mystorp
2019-07-23 09:13:03 +08:00
Array.prototype.unique1 = function () {
let m = new Map;
for (var i = 0; i < this.length; i++) //遍历当前数组
{
// 不同于 {}, Map 是有序的哈希表
// Map 的 key 可以是任意 js 值
m.set(this[i], true);
}
return m.keys();
}

let arr = [1, 1, 2, 2, NaN, NaN, null, null, undefined, undefined, {}, [], Symbol.split, '', '', false, false];
console.log(arr.unique1());
// MapIterator { 1, 2, NaN, null, undefined, {}, [], Symbol(Symbol.split), '', false }
arr.push(arr.shift(), arr.shift());
console.log(arr.unique1());
// MapIterator { 2, NaN, null, undefined, {}, [], Symbol(Symbol.split), '', false, 1 }

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

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

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

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

© 2021 V2EX