根据数组中的对象元素去重

需求:将几个数组对象合并后,需要根据数组中的元素去重。

数组合并:

//合并两个数组

arr1.push(...arr2)

或者

var arr3 = arr1.concat(arr2)

根据数组中的元素去重代码如下:

<script type="text/javascript">
        var result = {provider:[{isAgree:"同意",userName:"zhang",remark:'ddddd'},{isAgree:"同意",userName:"zhang",remark:'ddddd'},{isAgree:"同意",userName:"李四",remark:'ddddd'},{isAgree:"不同意",userName:"zhang",remark:'ddddd'}],eng:[{isAgree:"同意",userName:"wang",remark:'222'},{isAgree:"同意",userName:"wang",remark:'ddddd'},{isAgree:"同意",userName:"wang",remark:'ddddd'},{isAgree:"不同意",userName:"wu",remark:'ddddd'}]}
        console.log(arrUnique(result.provider));
        console.log(arrUnique(result.eng));

        //根据数组中的对象元素去重
        function arrUnique(arr){
            // 第一层for用来控制循环的次数
            for(var i=0; i<arr.length; i++){
                //第二层for 用于控制与第一层比较的元素
                for(var j=i+1; j<arr.length; j++){
                    //如果相等
                    if(arr[i].isAgree == arr[j].isAgree && arr[i].userName == arr[j].userName){
                        //删除后面的 即第 j个位置上的元素  删除个数 1 个
                        arr.splice(j,1);
                        j--;
                    }
                }
            }
            return arr;
        }

    </script>

打印结果:

 

JavaScript中,如果要对数组中的元素对象进行,可以利用对象的某个属性作为依据,具体实现步骤如下: 1. 创建一个新数组用于存放后的元素对象。 2. 遍历原数组中的元素对象,将元素对象的某个属性值作为判断依据。 3. 利用indexOf()方法判断新数组中是否已存在该属性值,如果不存在,则将元素对象添加到新数组中。 4. 返回新的数组,即为后的元素对象数组。 下面是一个简单的代码示例: ``` let arr = [{ name: 'Tom', age: 18 }, { name: 'Jerry', age: 20 }, { name: 'Tom', age: 18 }]; function unique(arr, attr) { let newArr = []; let tempArr = []; for(let i=0; i<arr.length; i++) { let item = arr[i]; if(tempArr.indexOf(item[attr]) == -1) { tempArr.push(item[attr]); newArr.push(item); } } return newArr; } let uniqueArr = unique(arr, 'name'); console.log(uniqueArr); ``` 在上面的代码中,我们通过unique()函数对原数组arr进行操作。该函数接受两个参数,分别为要进行数组依据的属性名。我们创建了两个数组newArr和tempArr,分别用于存放后的元素对象依据。在遍历原数组arr的过程中,我们通过判断tempArr中是否已经存在该属性值来进行。最后返回后的元素对象数组uniqueArr,输出结果为: ``` [ { name: 'Tom', age: 18 }, { name: 'Jerry', age: 20 } ] ``` 可以看到,成功,复的元素对象已被删除。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值