例如说[1,2,3,[1,1,2],[3,2],2]这样的应该如何去掉重复的数字,谢谢
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;})
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);});
思路是合并子项,再用Set去重即可
const data = [1,2,3,[1,1,2],[3,2],2];
const unique = [...new Set(data.reduce((p, vo) => p.concat(vo), []))];
8 回答4.8k 阅读✓ 已解决
6 回答3.5k 阅读✓ 已解决
5 回答2.9k 阅读✓ 已解决
5 回答6.4k 阅读✓ 已解决
4 回答2.3k 阅读✓ 已解决
4 回答2.8k 阅读✓ 已解决
3 回答2.5k 阅读✓ 已解决