• 技术文章 >web前端 >js教程

    js数组去重方法汇总

    一个新手一个新手2017-09-21 09:51:10原创1151


    方法一:

    对数组进行先排序,排完序之后在让元素与前一个元素做对比,相同的就去掉,该方法用到的是sort()方法和slice()

    var arr = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'j', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'j'];//对数组先进行排序arr.sort();            for(var i = 0; i < arr.length; i++) {                //用当前的元素与他的前一个元素进行对比
                    if(arr[i] == arr[i - 1]) {                    //如果相同的话,就删除掉第i个元素
                        arr.splice(i, 1);
                    }
                }
                console.log(arr);

    方法二:

    遍历数组,定义一个新数组,利用indexOf判断是否存在于新数组中,不存在则push到新数组,最后返回新数组

    var arr = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'j', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'j'];function delArr(array){
                    var newArr=[];//新建一个新数组
                    //遍历参数数组array
                    for(var i=0;i<array.length;i++){                    //判断新数组是否有这个元素值,没有的话,就把arr[i]给push到新数组newArr中
                        if(newArr.indexOf(array[i])===-1){
                            newArr.push(arr[i]);
                        }
                    }                return newArr;
                }
                console.log(delArr(arr));

    方法三:

    利用对象键值对法:新建一js对象以及新数组,遍历传入数组时,判断值是否为js对象的键,不是的话给对象新增该键并放入新数组。

    注意点: 判断是否为js对象键时,会自动对传入的键执行“toString()”,不同的键可能会被误认为一样;例如: a[1]、a[“1”] 。解决上述问题还是得调用“indexOf”。

    var arr = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'j', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'j'];function delArr2(array){
                    var json={},newArr=[],val,type;
                    for(var i=0;i<array.length;i++){                    
                    val=array[i];                    //判断val是什么数据类型
                        type=typeof val;
                        console.log("判断类型"+[type]);
                        //判断值是否为js对象的键,不是的话给对象新增该键并放入新数组
                        if(!json[val]){
                            json[val]=[type];
                            newArr.push(val);
                        }                    
                        else if(json[val].indexOf(type)<0){
                            json[val].push(type);
                            newArr.push(val);
                        }
                    }                return newArr;
                }
                console.log(delArr2(arr));

    以上就是js数组去重方法汇总的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。

    前端(VUE)零基础到就业课程:点击学习

    清晰的学习路线+老师随时辅导答疑

    自己动手写 PHP MVC 框架:点击学习

    快速了解MVC架构、了解框架底层运行原理

    专题推荐:javascript 汇总 方法
    上一篇:Node.JS的相关知识 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • ❤️‍🔥共22门课程,总价3725元,会员免费学• ❤️‍🔥接口自动化测试不想写代码?• 浅析Angular变更检测中的订阅异步事件• 一文聊聊node中的path模块• 聊聊如何选择一个最好的Node.js Docker镜像?• Angular中什么是变更检测?什么情况下会引起变更检测?• 浅析Angular变更检测中的DOM更新机制
    1/1

    PHP中文网