美文网首页
js 数组去重ES5、ES6实现

js 数组去重ES5、ES6实现

作者: 孟大仙 | 来源:发表于2018-08-21 15:32 被阅读0次

    ES5:

    ① 双层循环 比对元素(通过比对元素,存取到空数组的方式)
    Array.prototype.deduplication = function(){
    var result = [],
    len = this.length
    for (var i = 0; i < len; i++) {
    // 查找不重复元素,如果重复就跳过, 也就是跟当前i元素比对,一样就跳过i(++i),(注意这俩循环是一个数组奥,也就是数据一样),外层存i位置元素。最后返回新数组
    for (var j = i+1; j < len; j++) {
    if (this[i] === this[j]) { // 如果相同
    j = ++i // 跳过当前i位置,并把新的i 位置赋给j.
    }
    }
    result[result.length] = this[i]
    }
    return result
    }
    var arr1 = [1, 9, 8, 5, 9, 6, 5, 1]
    var arr2 = arr1.deduplication()

    console.log(arr2) // [ 8, 9, 6, 5, 1 ]

    ② 利用对象属性不重复原理,把数组元素(单一元素的一维数组)作为对象key,判断对象key 存不存在来存储元素
    Array.prototype.deduplication = function () {
    var o = {},
    i,
    len = this.length
    result = [];
    for (i = 0; i < len; i ++) {
    if (!o[this[i]]) {
    o[this[i]] = 1
    result[result.length] = this[i]
    }
    }
    return result;
    }

    var arr1 = [1, 9, 8, 5, 9, 6, 5, 1]
    var arr2 = arr1.deduplication()

    console.log(arr2) // [ 8, 9, 6, 5, 1 ]

    ③ es6数组去重, 利用Set集合,

    相关文章

      网友评论

          本文标题:js 数组去重ES5、ES6实现

          本文链接:https://www.haomeiwen.com/subject/bacgpftx.html