JavaScript 数组去重

Array.prototype.RemoveRepeat= function () {
    // 构建一个新数组存放结果
    var newArray = [];
    // 创建一个空对象
    var object = {};
    // for循环时,每次取出一个元素与对象进行对比
    // 如果这个元素不重复,则将它存放到结果数中
    // 同时把这个元素的内容作为对象的一个属性,并赋值为1,
    // 存入到第2步建立的对象中
    for (var i = 0; i < this.length; i++){
        // 检测在object对象中是否包含遍历到的元素的值
        if(!object[typeof(this[i]) + this[i]]) {
            // 如果不包含,将存入对象的元素的值推入到结果数组中
            newArray.push(this[i]);
            // 如果不包含,存入object对象中该属性名的值设置为1
            object[typeof(this[i]) + this[i]] = 1;
        }
    }
    return newArray;
}

思路:对象键值对法

  • 创建一个JavaScript对象以及新数组
  • 使用for循环遍历原数组,每次取出一个元素与JavaScript对象的键做对比
  • 如果不包含,将存入对象的元素的值推入到结果数组中,并且将存入object对象中该属性名的值设置为1
  • 注:【1】和【'1'】无法区分。

测试:

eg: var arr = [1,2,3,4,'a','b',1,3,4,56,32,34,2,'b','c',5,'1','2'];
execute:arr.RemoveRepeat();
result:[1, 2, 3, 4, "a", "b", 56, 32, 34, "c", 5, "1", "2"]
 
 

posted on 2016-07-15 15:52  Frank-  阅读(234)  评论(0编辑  收藏  举报

导航