JavaScript数组去重

作者: 小枫枫

临枫的项目经历分享给你们啦~

扫码交朋友

标签:

特别声明:文章有少部分为网络转载,资源使用一般不提供任何帮助,特殊资源除外,如有侵权请联系!

首先创建一个空对象,然后用 for 循环遍历

利用对象的属性不会重复这一特性,校验数组元素是否重复

(效率最高)

function distinct(a, b) {
    let arr = a.concat(b)
    let result = []
    let obj = {}

    for (let i of arr) {
        if (!obj[i]) {
            result.push(i)
            obj[i] = 1
        }
    }

    return result
}

ES6中提供的Set    new 一个 Set

(效率第二)

    var arr = ['aaa', 'bbb', 'ccc', 'ddd','eee','fff','fff','fff','eee','ddd'];
    const set = new Set(arr);
    console.log(Array.from(set));
    //输出 >>>(6)["aaa", "bbb", "ccc", "ddd", "eee", "fff"];
-----------------------------------------------------------------------
    封装成方法
    function dedupe(array) {
      return console.log(Array.from(new Set(array)));
    }
    dedupe([1,1,2,3]);
     //输出 >>>(3)["1", "2", "3"];

 

常用的数组去重  双层for循环

(效率最差)

let l = arr.length;
for (let i = 0; i < l; i++) {
	for (let j = i + 1; j < l; j++) {
		if (arr[i].id == arr[j].id) { //数组对象的话 这里判断是数组对象某个参数如果相等
			arr.splice(j, 1);    // splice 会改变数组长度,所以要将数组长度 l 和下标 j 减一
			l--;
			j--;
		}
	}
      console.log(arr)
}

/**
**封装方法*/

function distinct(a, b) {
    let arr = a.concat(b);
    for (let i=0, len=arr.length; i<len; i++) {
        for (let j=i+1; j<len; j++) {
            if (arr[i] == arr[j]) {
                arr.splice(j, 1);
                len--;
                j--;
            }
        }
    }
    return arr
}

 

 

本文最后更新于2019-12-16,已超过 1 年没有更新,如果文章内容或图片资源失效,请留言反馈,我们会及时处理,谢谢!
分享到:
打赏

作者: 小枫枫, 转载或复制请以 超链接形式 并注明出处 小枫枫不疯喔
原文地址: 《JavaScript数组去重》 发布于2019-12-16

评论

切换注册

登录

您也可以使用第三方帐号快捷登录

切换登录

注册

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏