8_引用类型(【五】object练习去掉数组的重复项)
8_引用类型(【五】object练习去掉数组的重复项)
1217528969 发表于3年前
8_引用类型(【五】object练习去掉数组的重复项)
  • 发表于 3年前
  • 阅读 13
  • 收藏 0
  • 点赞 0
  • 评论 0

腾讯云 新注册用户 域名抢购1元起>>>   

摘要: 利用js对象的特性,去掉数组中的重复项
//数组过滤重复值
//1  把数组转成js的对象
//2  把数组中的值变成js对象中的key
//3  把这个对象的key转换为数组
var arr = [2, 1, 2, 10, 2, 3, 5, 5, 1, 10, 13];

//数组转换为对象
function array2obj(arr){
    var obj = {};
    for(var i=0; i<arr.length; i++){
        obj[arr[i]] = 1;
    }
    /*
    也可以使用ECMAScript5中的新方法forEach()
    arr.forEach(function(currentValue, index, array) {
        obj[currentValue] = 1;
    });
    */
    return obj;
}

//对象转换为数组
function obj2array(obj){
    var arr = [];
    for(var attr in obj){
        //使用hasOwnProperty()方法判断是否为对象自身的属性,而不是对象的原型的属性
        if(obj.hasOwnProperty(attr)){
            arr.push(attr);
        }
    }
    return arr;
}

//综合的方法 去掉数组中的重复项
function uniq(arr){
    return obj2array(array2obj(arr));
}

//数组排序方法
function compare(value1, value2){
    return value1 - value2;
}

var uniqArr = uniq(arr);
console.info(uniqArr.sort(compare));


共有 人打赏支持
粉丝 2
博文 27
码字总数 14810
×
1217528969
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: