JavaScript数组去重

来源:互联网 发布:太仓cnc编程招聘 编辑:程序博客网 时间:2024/06/06 08:20
/** * 数组去重方法思路 *方法 1:新建一个数组,将原数组第一个元素放入, *然后从原数组第二个元素开始与新数组内元素比较,相同则放弃,不同则加入新数组 */Array.prototype.unique1 = function() {    var aRes = [this[0]];    var flag = false;    for (var i = 1; i < this.length; i++) {        for (var j = 0; j < aRes.length; j++) {            if (this[i] == aRes[j]) {                flag = true;                break;            } else {                flag = false;            }        }        if (!flag) {            aRes.push(this[i]);        }    }    return aRes;};var arr = [1, 3, 2, 1, 3, 4, 4, 6];console.log(arr.unique1());// [1, 3, 2, 4, 6]/** * 方法2:先给原数组排序,新建一个数组,将排序后的原数组第一个元素赋值给新数组 * 原数组第二个元素开始与新数组的最后一位比较,不同则添加。 * 对于要求原数组元素顺序不变的情况不适用。 */Array.prototype.unique2 = function() {    this.sort();    var aRes = [this[0]];    for (var i = 1; i < this.length; i++) {        if (this[i] !== aRes[aRes.length - 1]) {            aRes.push(this[i]);        }    }    return aRes;}var arr = [1, 3, 2, 1, 3, 4, 4, 6];console.log(arr.unique2());// [1, 3, 2, 4, 6]/** * 方法3:定义一个新数组,一个新对象,for循环时,每次取出一个元素与对象进行对比, * 如果这个元素不重复,则把它存放到结果数组中,同时把这个元素的内容作为对象的一个属性。 */Array.prototype.unique3 = function() {    var aRes = [];    var oTemp = {};    for (var i = 0; i < this.length; i++) {        if (!oTemp[this[i]]) {            aRes.push(this[i]);            oTemp[this[i]] = 1;        }    }    return aRes}var arr = [1, 3, 2, 1, 3, 4, 4, 6];console.log(arr.unique3());// [1, 3, 2, 4, 6]
原创粉丝点击