javascript数组去重的三种方法

大脸胖柴 2022-04-16 22:51:20

for循环方法  已封装函数

思路:使用indexOf函数查找元素的性质,将不重复的元素赋值给新数组

// 数组去重 for循环
        function quchong(xingcan) {
            var b = [];
            for (var i = 0; i < xingcan.length; i++) {
                //数组元素遍历
                var c = xingcan[i];
                if (b.indexOf(c) === -1) {
                    //判断是否含有此元素
                    b.push(c); //若无此元素则添加
                }
            }
            return b; //返回去重后的数组
        }
        var arr = ["小高", "小高", "小魏", "小张", "小刘", "小张", "小程"];
        quchong(a);
        console.log("原数组为:", a);
        console.log("去重后数组为:", quchong(a));

splice删除元素方法 数组去重   已封装函数

思路:比较相邻元素,将相同(等)后一个的元素删除,得到新数组。

// splice删除元素 数组去重
        var a = ["小高", "小高", "小魏", "小张", "小刘", "小张", "小程"];
        function quchong(arr) {
            for (var i = 0; i < arr.length - 1; i++) {
                for (var j = i + 1; j < arr.length; j++) {
                    if (arr[i] === arr[j]) {
                        arr.splice(j, 1);
                        j--;
                    }
                }
            }
            return arr;
        }
        quchong(a);
        console.log(a);

filter函数方法   已封装函数

思路:使用filter函数属性结合indexOf返回的下标判断是否相等(若相等则为该元素首次出现),若相等,则满足条件则返回值是true,把满足条件的当前遍历元素返回,并添加到生成的新数组中去。

 // 用filter函数去重
        var a = [1, 3, 2, 1, 4, 5, 5, 3];
        function quchong(myarr) {
            var b = myarr.filter(function (item, i) {
                var a = myarr.indexOf(item);
                if (a === i) {
                    return item;
                }
            });
            return b;
        }
        console.log(quchong(a));
        // 简写
        var a = [1, 3, 2, 1, 4, 5, 5, 3];
        function quchong(myarr) {
            var b = myarr.filter(function (item, i) {
                return myarr.indexOf(item) === i;
            });
            return b;
        }
        console.log(quchong(a));

 

...全文
49 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

87,996

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧