JavaScript数组中包含数组如何去重?
PHPz
PHPz 2017-04-10 14:23:34
[JavaScript讨论组]

例如说[1,2,3,[1,1,2],[3,2],2]这样的应该如何去掉重复的数字,谢谢

PHPz
PHPz

学习是最好的投资!

全部回复(4)
巴扎黑
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);
大家讲道理
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步建立的对象中。

来自

大家讲道理

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

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

myArray.filter(function(elem, pos,self){return self.indexOf(elem)== pos;})
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号