-
宝慕林4294392
var arr = [1,2,3,[1,1,2],[3,2],2];var result = arr.reduce(function(v, i) { if (Array.isArray(i)) { i.forEach(function(item) { if (v.indexOf(item) < 0) { v.push(item); } }); } else { if (v.indexOf(i) < 0) { v.push(i); } } return v;}, []);console.log(result);
-
哔哔one
Array.prototype.unique = function(){ var res = []; var json = {}; for(var i = 0; i < this.length; i++){ if(!json[this[i]]){ res.push(this[i]); json[this[i]] = 1; } } return res;}var arr = [112,1,23,'absc'];alert(arr.unique());1.创建一个新的数组存放结果2.创建一个空对象3.for循环时,每次取出一个元素与对象进行对比,如果这个元素不重复,则把它存放到结果数组中,同时把这个元素的内容作为对象的一个属性,并赋值为1,存入到第2步建立的对象中。来自
-
侃侃无极
一维数组的话,简洁的写法应该是这样的myArray.filter(function(elem, pos,self){return self.indexOf(elem)== pos;})
-
开心每一天1111
下面的做法局限性很大, Just for fan.arr.toString().split(",").sort().reduce(function(v,i){if (v.indexOf(i) < 0) {v.push(i);} return v; }, []).
map(function(element){return parseInt(element,10);});
-
Helenr
思路是合并子项,再用Set去重即可const data = [1,2,3,[1,1,2],[3,2],2];const unique = [...new Set(data.reduce((p, vo) => p.concat(vo), []))];