js 对象object转字符串,JS对象数组去重复

2018/11/26 15:1:2 | 阅2844 来源:好空间网络 [打印] [关闭]
 

var code='JS对象'
//console.log('打印字符串'+JSON.stringify(code))

老是忘记, 记录下来


以下是去重复的方法

var array = [
    {a:1,b:2,c:3,d:4},
    {a:11,b:22,c:333,d:44},
    {a:111,b:222,c:333,d:444},
    {a:11,b:22,c:33,d:44},
    {a:11,b:22,c:33,d:444}
    ];
//将对象元素转换成字符串以作比较
function obj2key(obj, keys){
    var n = keys.length,
        key = [];
    while(n--){
        key.push(obj[keys[n]]);
    }
    return key.join('|');
}
//去重操作
function uniqeByKeys(array,keys){
    var arr = [];
    var hash = {};
    for (var i = 0, j = array.length; i < j; i++) {
        var k = obj2key(array[i], keys);
        if (!(k in hash)) {
            hash[k] = true;
            arr .push(array[i]);
        }
    }
    return arr ;
}

调用方法

//进行去重
var arr = uniqeByKeys(array,['a','b']);

最后得到

array = [
    {a:1,b:2,c:3,d:4},
    {a:11,b:22,c:333,d:44},
    {a:111,b:222,c:333,d:444}
    ];


小程序里使用

var newarray =l.data //新数组
var newarrays = newarray.concat('老数组'); //新的和旧的合并
var arr = that.uniqeByKeys(newarrays,['productid']);//调用方法去重


//将对象元素转换成字符串以作比较
obj2key:function(obj, keys){
var n = keys.length,
key = [];
while(n--){
key.push(obj[keys[n]]);
}
return key.join('|');
},
//去重操作
uniqeByKeys:function(array,keys){
var arr = [];
var hash = {};
for (var i = 0, j = array.length; i < j; i++) {
var k = this.obj2key(array[i], keys);
if (!(k in hash)) {
hash[k] = true;
arr.push(array[i]);
}
}
return arr ;
}


经营许可证ICP:皖B2-20100052 公司邮箱:zcdnsz@jspkongjian.net
Copyright © 2004-2015, 安徽好空间网络科技有限公司 版权所有 , 本站素材部分来源于网络,如有侵权请告知删除。