原生JavaScript对象数组去重,重构为对象{pro1:[hash], pro02: [hash]}

function unique(objArr) {

    var result = {};

    var proObj = objArr[0];
    for(var pro in proObj){
      var hash = [];
      for(var i = 0; i < objArr.length; i++){
        var obj = objArr[i];
        for(var pros in obj){
          if(pros === pro){
            var val = obj[pros];
            if(!hash[val]){
              var valueObj = {};
              valueObj.lable = val;
              valueObj.value = val;
              hash.push(valueObj);
              hash[val] = true;
            }
          }
        }
      }
      result[pro] = hash;
    }

    return result;
  };

原文地址:https://www.cnblogs.com/mnxxz/p/9875318.html

时间: 2024-10-11 16:53:55

原生JavaScript对象数组去重,重构为对象{pro1:[hash], pro02: [hash]}的相关文章

ES6 set和map数据结构对对象数组去重简单实现

自从有了es6的set数据结构,数组的去重可以简单用一行代码实现,比如下面的方式 let arr = [1, 2, 2, 3, 4] function unique (arr) { return [...new Set(arr)] } console.log(unique(arr)) // [1, 2, 3, 4] 但是当数组的项不再是简单的数据类型时,比如是对象时,这种方法就会导致错误,比如下面的结果 let arr = [ { name: 'a', num: 1}, { name: 'b',

js对象数组操作之一:对象数组中对象去重的方法总结

在日常开发业务中,经常会有一个数组由多个对象构成,需要对这种数据结构进行操作,如下: const arr = [ { name:'tom', age:15 }, { name:'jack', age:18 }, { name:'tom', age:10 }, ...] 今天总结了一下 先说这种数据结构的去重方法,对于数组中的多个对象去除重复,需要设置布尔值来进行. 一.jquery方法 var oldArr = [ { name:'tom', age:15 }, { name:'jack', a

Javascript 类数组(Array-like)对象

Javascript中的类数组对象(Array-like object)指的是一些看起来像数组但又不是数组的对象.Javascript中的arguments变量.document.getElementsByTagName()返回值就是典型的类数组对象. 类数组特性 类数组对象具有一个length属性且length的值为非负整数. 类数组对象不具有数组对象的方法.例如:push. pop等方法. 类数组对象可以像数组一样遍历,但不支持数组对象的方法. function test1() { for(

js 对象数组去重问题

在项目中定义对象数组是非常常见的,这就免不了要对对象数组进行去重.当然不能简单的使用===来解决问题,因为这时候数组中的类型为对象类型,即使完全相同的两个对象也不相等的.下面的例子说明一切: {}==={}//fasle []===[]//fasle 所以应该使用其他方法来判断两个对象是否相等,能代表这个对象的唯一性的属性,比如id. 使用id举例: var arr=[ {id:01,name:'jack'}, {id:02,name:'tome'}, {id:01,name:'jack'},

对象数组去重

//对象数组的去重 function uniqObjInArray(objarray) { let len = objarray.length; let tempJson = {}; let res = []; for (let i = 0; i < len; i++) { //取出每一个对象 tempJson[JSON.stringify(objarray[i])] = true; } let keyItems = Object.keys(tempJson); for (let j = 0;

使用reduce的方法实现对象数组去重

在开发中和面试当中,数组去重问题往往是受宠儿,那用最短的代码解决这个问题会使效率得到更大的提升.普通的数组,我们可以通过filter过滤方法进行去重,详情见本人博客:http://www.cnblogs.com/mmykdbc/p/8422419.html 那当是一个对象数组的时候呢,filter就显得相形见绌了,再用那种笨的一个一个遍历的方法会使得工作效率大打折扣,这个时候,需要用到reduce叠加方法,上代码: let arr = [{"all": 1}, {"all&q

JavaScript实现数组去重方法

一.利用ES6 Set去重(ES6中最常用) function unique (arr) { return Array.from(new Set(arr)) } var arr = [1,1,'true','true',true,true,15,15,false,false, undefined,undefined, null,null, NaN, NaN,'NaN', 0, 0, 'a', 'a',{},{}]; console.log(unique(arr)) //[1, "true&quo

使用JavaScript进行数组去重——一种高效的算法

最近比较忙,没时间更新博客,等忙完这阵子会整理一篇使用AngularJS构建一个中型的单页面应用(SPA)的文章,尽情期待!先占个坑. 数组去重的算法有很多种,以下是一种. 思路如下: 定义一个空的对象obj: 循环数组arr,判断obj[arr[i]]是否为false,如果是则将该数组元素放到result中,并且将obj[arr[i]]置为true: obj[arr[0]]肯定为false,因为obj为空,arr[0]将被放到result中,并且obj[arr[0]]被置为true: 循环的过

javascript实现数组去重

数组去重即去掉数组中重复的元素,是web前端工作者在面试过程中和工作中经常会遇到的一个问题,相信一般的方法大家都会,只不过会存在效率差异问题,下面我就来说说我们常用的几种数组去重的方法! 方法1,思路:通过双重循环,每次检测新数组里面是否有该元素,没有就加进去,改方法思路简单,但当数组长度较长时,会非常影响性能!(不推荐使用) function deleteRepeat1(arr) { var newArr = []; for (var i = 0; i < arr.length; i++) {

JavaScript之数组去重

前言:昨天看到了别人发的帖子,谈到了面试题中经常出现的数组去重的问题.作为一个热爱学习.喜欢听老师话的好孩纸,耳边忽然想起来高中老师的谆谆教导:不要拿到题就先看答案,要先自己思考解答,然后再对照答案检验.于是我便开始了独立思考的过程: 首先,我想到的是另建一个结果数组,用来存储原始数组中不重复的数据.遍历原始数组依次跟结果数组中的元素进行比较,检测是否重复.于是乎,我写出了如下代码A: 1 Array.prototype.clearRepetitionA = function(){ 2 var