为了账号安全,请及时绑定邮箱和手机立即绑定

JavaScript数组中包含数组如何去重?

JavaScript数组中包含数组如何去重?

临摹微笑 2019-03-29 23:15:59
例如说[1,2,3,[1,1,2],[3,2],2]这样的应该如何去掉重复的数字,谢谢
查看完整描述

5 回答

?
宝慕林4294392

TA贡献2021条经验 获得超8个赞

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);


查看完整回答
反对 回复 2019-04-11
?
哔哔one

TA贡献1854条经验 获得超8个赞

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步建立的对象中。

来自


查看完整回答
反对 回复 2019-04-11
?
侃侃无极

TA贡献2051条经验 获得超10个赞

一维数组的话,简洁的写法应该是这样的

myArray.filter(function(elem, pos,self){return self.indexOf(elem)== pos;})


查看完整回答
反对 回复 2019-04-11
?
开心每一天1111

TA贡献1836条经验 获得超13个赞

下面的做法局限性很大, 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);});


查看完整回答
反对 回复 2019-04-11
?
Helenr

TA贡献1780条经验 获得超4个赞

思路是合并子项,再用Set去重即可


const data = [1,2,3,[1,1,2],[3,2],2];

const unique = [...new Set(data.reduce((p, vo) => p.concat(vo), []))];


查看完整回答
反对 回复 2019-04-11
  • 5 回答
  • 0 关注
  • 1453 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信