json去重

Array.prototype.removerepeatattr = function () {
    var tmp = {}, b = [], a = this;
    for (var i = 0; i < a.length; i++) {
        if (!tmp[a[i].id]) {
            tmp[a[i].id] = !0;
        } else {
            a.splice(i, 1);
            
        }
    }
};
var a=[{"id":"1"}, {"id":"2"}, {"id":"3"}, {"id":"4"}, {"id":"1"}];
a.removerepeatattr();

在JavaScript中,实现JSON对象有多种方法,以下是几种常见的方式: ### 利用对象属性名唯一性 通过对象的属性名不可复的特性来判断是否复,从而得到后的数组。 ```javascript const arr = [{"id": 0, "name": "牛肉"},{"id": 1,"name": "羊肉"},{"id": 2, "name": "牛肉"},{"id": 3,"name": "鱼肉"},{ "id": 4,"name":"鸡肉"}]; function delRepeatJson(arr = [], attrName = '') { var temp = {}; var result = []; arr.forEach(function (item, index) { if (!temp[item[attrName]]) { result.push(item); temp[item[attrName]] = true; } }); return result; } console.log(delRepeatJson(arr, 'name')); ``` 这种方法根据指定的属性名进行,适用于根据某个特定属性判断复的场景[^2]。 ### 使用Set和JSON.stringify 使用`map()`方法将JSON对象转换为字符串,并使用`Set`对象复项,然后将字符串再次转换为JSON对象。 ```javascript let arr = [{name: 'zhangsan', age: 10}, {name: 'lisi', age: 30}, {name: 'zhangsan', age: 10}]; let uniqueArr = Array.from(new Set(arr.map(JSON.stringify))).map(JSON.parse); console.log(uniqueArr); ``` 此方法会将整个JSON对象进行字符串化比较,能处理对象的所有属性,适用于需要对整个对象进行精确比较的场景[^3]。 ### 使用forEach和对象存储JSON对象字符串化后作为对象的键存储,最终将对象的键转换回JSON对象。 ```javascript var obj = [ {year: '2013-2014', term: '1'}, {year: '2013-2014', term: '2'}, {year: '2013-2014', term: '3'}, {year: '2013-2014', term: '2'}, {year: '2014-2015', term: '1'}, {year: '2013-2014', term: '2'} ]; var unique = {}; obj.forEach(function(gpa) { unique[JSON.stringify(gpa)] = gpa; }); obj = Object.keys(unique).map(function(u) { return JSON.parse(u); }); console.log(obj); ``` 该方法同样是基于对象属性名的唯一性,通过字符串化对象来判断复,能处理复杂的JSON对象结构[^5]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值