精华内容
下载资源
问答
  • 可以通过上次的需求,我们通过 TYPE 和 REMARK 两个 key 对应的 value 共同决定是否合并属性,我们是可以将两个属性进行串联成一个新的 key,如果这个 key 相同,即两个条件同时满足。这里不仅仅合并相邻的数据,不...
  • }else{ newArr.forEach(function(value,index){ //如果已经存在 就循环新组的值将值插入属性相同数组里 为了防止重复添加 只要和第一个比较就可以了 if(value[0].sex==item.sex){ value.push(item) } }) } }) ...

    https://blog.csdn.net/C_TopTopTop/article/details/119356876
    var array=[
    {id:1,name:‘小明’,sex:‘男’},
    {id:2,name:‘小刚’,sex:‘男’},
    {id:3,name:‘小红’,sex:‘女’},
    {id:4,name:‘小花’,sex:‘女’},
    {id:5,name:‘小甜甜’,sex:‘女’},
    ]
    var obj={},newArr=[];
    array.forEach(function(item,suffix){
    //根据对象的属性是唯一的,将值作为对象的属性名
    if(!obj[item.sex]){
    var arr=[];
    arr.push(item);
    newArr.push(arr);
    obj[item.sex]=item;
    }else{
    newArr.forEach(function(value,index){
    //如果已经存在 就循环新组的值将值插入属性相同的数组里 为了防止重复添加 只要和第一个比较就可以了
    if(value[0].sex==item.sex){
    value.push(item)
    }
    })
    }
    })
    console.log(obj);

    展开全文
  • 可以通过上次的需求,我们通过TYPE 和 REMARK 两个 key 对应的 value 共同决定是否合并属性,我们是可以将两个属性进行串联成一个新的 key,如果这个 key 相同,即两个条件同时满足。这里不仅仅合并相邻的数据,不...

    可以通过上次的需求,我们通过 TYPE 和 REMARK 两个 key 对应的 value 共同决定是否合并属性,我们是可以将两个属性进行串联成一个新的 key,如果这个 key 相同,即两个条件同时满足。这里不仅仅合并相邻的数据,不相邻的同种 属性也会进行合并。

    源数据:

    let data = [
      {"TYPE": "01", "REMARK": "休假"},
      {"TYPE": "03", "REMARK": "在班"},
      {"TYPE": "03", "REMARK": "在班"},
      {"TYPE": "02", "REMARK": "上海出差"},
      {"TYPE": "02", "REMARK": "北京出差"},
      {"TYPE": "04", "REMARK": "休息"},
      {"TYPE": "04", "REMARK": "休息"}
    ]

    目标数据:

    [{
      "TYPE": "01",	"REMARK": "休假", "KEY": "01休假", "COUNT": 1}, {
      "TYPE": "03",	"REMARK": "在班", "KEY": "03在班", "COUNT": 2}, {
      "TYPE": "04",	"REMARK": "休息", "KEY": "04休息", "COUNT": 2}, {
      "TYPE": "02",	"REMARK": "上海出差", "KEY": "02上海出差", "COUNT": 1}, {	
      "TYPE": "02",	"REMARK": "北京出差", "KEY": "02北京出差", "COUNT": 1
    }]

    首页我们创建 KEY 属性,KEY 的 value 有 TYPE 和 REMARK 的 value  决定。代码如下:

    let newdata = []
    for (let k in data) {
      newdata.push({
        ...data[k],
        KEY: data[k].TYPE + data[k].REMARK,
      })
    }
    console.log(newdata)
    结果如下:
    [
        {  "TYPE": "01", "REMARK": "休假", "KEY": "01休假"}, 
        {  "TYPE": "03", "REMARK": "在班", "KEY": "03在班"}, 
        {  "TYPE": "03", "REMARK": "在班", "KEY": "03在班"}, 
        {  "TYPE": "04", "REMARK": "休息", "KEY": "04休息"}, 
        {  "TYPE": "02", "REMARK": "上海出差", "KEY": "02上海出差"}, 
        {  "TYPE": "02", "REMARK": "北京出差", "KEY": "02北京出差"}, 
        {  "TYPE": "04", "REMARK": "休息", "KEY": "04休息"}
    ]

    下面我们进行相同属性的数据进行合并,达目如下

    let result = []
    let map = {}
    for(let k = 0; k < newdata.length; k++) {
      if(!map[newdata[k].KEY]) {
        result.push({
          ...newdata[k],
          COUNT: 1
        })
        map[newdata[k].KEY] = newdata[k]
      }else {
        for(let j = 0; j < result.length; j++){
          if(result[j].KEY== newdata[k].KEY){
            result[j].COUNT++
            break;
          }
        }
      }
    }
    console.log(result)

     

     

     

    展开全文
  • 数组里某个属性相同对象合并成一个数组数组如下 let resData = [ { "name": "住院医疗最高报销", "tagName": "医疗", "insuredAmount": "6000" }, { "name": "身故赔付", "tagName": "...

    将数组里某个属性相同的对象合并成一个数组

    原数组如下

    let resData = [
          {
            "name": "住院医疗最高报销",
            "tagName": "医疗",
            "insuredAmount": "6000"
          },
          {
            "name": "身故赔付",
            "tagName": "寿险",
            "insuredAmount": "36.00"
          },
          {
            "name": "烦死了免费陈述事实",
            "tagName": "寿险",
            "insuredAmount": "8888.00"
          },
          {
            "name": "你好,噜噜噜",
            "tagName": "寿险",
            "insuredAmount": "66.00"
          },
          {
            "name": "120种重大疾病确诊赔付",
            "tagName": "重疾",
            "insuredAmount": "350000"
          }
        ]
    

    需求是,转成如下数组
    也就是将具有相同“tagName”的对象合并成新数组

    let Data = [
          {
            "tagName": "医疗",
            dataInfo: [
              {
                "name": "住院医疗最高报销",
                "tagName": "医疗",
                "insuredAmount": "6000"
              }
            ]
          },
          {
            "tagName": "寿险",
            dataInfo: [
              {
                "name": "身故赔付",
                "tagName": "寿险",
                "insuredAmount": "36.00"
              },
              {
                "name": "烦死了免费陈述事实",
                "tagName": "寿险",
                "insuredAmount": "8888.00"
              },
              {
                "name": "你好,噜噜噜",
                "tagName": "寿险",
                "insuredAmount": "66.00"
              },
            ]
          },
          {
            "tagName": "重疾",
            dataInfo: [
              {
                "name": "120种重大疾病确诊赔付",
                "tagName": "重疾",
                "insuredAmount": "350000"
              }
            ]
          }
        ]
    

    以下是解决方案
    方案一:

    let tempArr = [];
    let Data = [];
    for (let i = 0; i < resData.length; i++) {
       if (tempArr.indexOf(resData[i].tagName) === -1) {
         Data.push({
           tagName: resData[i].tagName,
           dataInfo: [resData[i]]
         });
         tempArr.push(resData[i].tagName);
       } else {
         for (let j = 0; j < Data.length; j++) {
           if (Data[j].tagName == resData[i].tagName) {
             Data[j].dataInfo.push(resData[i]);
             break;
           }
         }
       }
     }
     console.log(Data);
    

    方案二:

    let dataInfo = {};
    resData.forEach((item, index) => {
    	let { tagName } = item;
    	if (!dataInfo[tagName]) {
    		dataInfo[tagName] = {
    			tagName,			
    			child: []
    		}
    	}
    	dataInfo[tagName].child.push(item);
    });
    let list = Object.values(dataInfo); // list 转换成功的数据
    console.log(list)
    

    转载其他博主 只为用时方便!

    展开全文
  • 数组中相同属性对象筛选出来,并且合并数量

    大家一开始看到这个标题可能有点懵,咱先看一个需求,下面是模拟的数据。

    const data = [
        { id: "001", type: "big", count: 10 },
        { id: "002", type: "small", count: 10 },
        { id: "003", type: "middle", count: 10 },
        { id: "004", type: "big", count: 10 },
        { id: "005", type: "small", count: 10 },
        { id: "006", type: "big", count: 10 },
        { id: "007", type: "small", count: 10 },
        { id: "008", type: "big", count: 10 },
        { id: "009", type: "middle", count: 10 },
        { id: "010", type: "big", count: 10 },
        { id: "011", type: "big", count: 10 },
        { id: "012", type: "small", count: 10 },
      ]
    
      //将数据处理成这样
      // 类型     数量
      // small    40
      // big      60
      // middle   20 

    上面是后端返回的数据格式,今天有个小伙伴儿问我如何把这个数据处理成要求那样的,我这乍一看也没多难啊,首先第一步,应该把type值相同的挑选出来放在一起,我的代码是这样写的

    let dataSort = []
      data.forEach((obj) => {
        let array = dataSort[obj['type']] || []
        array.push(obj)
        dataSort[obj['type']] = array
      })

    打印dataSort的结果是这样的:

     我这一看,哎呀,正正好,再把相同类型的count加在一起,合并成一个不就完啦,然后我就开始陷入迷茫了,无论怎么处理都不合适,因为咱们得考虑后端如果除了这三种之外情况,所以不能直接按这三种情况直接读,但是这个【二维数组】我咋也遍历不出来了,看了半天我才注意到一个细节。

     what?长度为零,我恍然大悟,这根本就不是一个二维数组,也不能那样去遍历,应该把他看作一个数组对象,去遍历对象的属性,然后我改进了一下我的代码

    
      let dataSort = []
      data.forEach((obj) => {
        let array = dataSort[obj['type']] || []
        array.push(obj)
        dataSort[obj['type']] = array
      })
      console.log(dataSort)
      let arr = Object.keys(dataSort)
      const dataCombine=arr.map((item1) => {
        const current={count:0}
        dataSort[item1].map((item2) => {
          current.type=item2.type;
          current.count=current.count+item2.count;
        })
        return current
      })
      const clumns = [
        {
          title: '类型',
          dataIndex: 'type',
          key: 'name',
        },
        {
          title: '总数',
          dataIndex: 'count',
          key: 'age',
        },
      ]
      return (
        <Table
          dataSource={dataCombine}
          columns={clumns}
          pagination={false}
        />
      );
    }

    输出结果是这样的(请忽略样式,哈哈哈)

     

    展开全文
  • * 数组对象将值相同属性进行合并 * @param arr 操作的数据 * @param mergePro 需要合并属性 * @param samePro 相同属性进行比较 */ mergeSameData(arr, mergePro, samePro) { // 最终拿到的数据 const...
  • js 对象数组属性相同的值合并相加

    千次阅读 2020-12-22 14:26:56
    对象数组根据某一相同项示例为travelerEmpNum,合并其他属性为一个数组,主要包括对象数组根据某一相同合并其他属性为一个数组,为项目需求。对象数组示例let rows = [{"travelerName":"王晓&陈辰",...
  • js数组中相同对象合并该对象中不同字段 //数据,水果名称相同的,把数量累加合并起来,根据id是否相同判断 var data =[ { id:'5ec223ec306f2300017aa7d4', fruitName:'苹果', num:100, price:30 }, { id:'5ec4...
  • var Array = [ { "22": "333" }, { "555": "444" }, { "22": "666" } ] //实现的数组:[{ "22": "333,666"},{"555": "444"}] var newArr = [] Array.map(value => { ...
  • let newData = Array.from({ length: s.size }, () => []) //创建指定长度数组并添值 oldData.forEach(item => { let index = [...s].indexOf(item.id) //找到指定下标 newData[index].push(item) //添加数据 }) ...
  • 根据数组对象中相同属性值组建新数组——方便递归-js将数组对象中某个值相同的对象合并成一个新对象 实例 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta ...
  • 对一个存储着许多对象数组进行遍历,将其中包含相同字段如Bondkey的对象进行合并,如amount的值相加,返回新的数组,该数组中不包含BondKey重复的对象。  解决方案 对源数组进行遍历,另新建一个数组存放...
  • js将数组对象某个值相同对象合并成一个新对象 需求:beforeData - - > afterData //源数组 var beforeData= [ { name: "tony", id: "1", age: "20" }, { name: "jack", id: "2", age: "21" }, { name: "tony...
  • let list = [{ name: "li", id: "01" }, { name: "li", id: "02" }, { name: "li", id: "03" }, { name: "hou", id: "02" }, { ...
  • let arr = [ { clfl: '不动产登记申请书', sfbz: null, caseAttachId: '6583bcb8-8ed3-482e-9e8c-b36e16665d5a' }, { clfl: '不动产登记申请书', sfbz: null, caseAttachId: '07cf2603-8c09-4491-99ec-6f...
  • 数组中具有相同属性相同属性值的多条数据合并成一条数据的方法 //原始数组 let _arr = [ {key:'1',datas:[11,12,13]}, {key:'1',datas:[14,15,16]}, {key:'2',datas:[21,22,23]}, {key:'2',...
  • JS 一个数组中有多个对象,若对象的某个属性相同,则合并对象 START 最近遇到一个场景,需要前端去处理一下数据,需求如题。 实现起来,发现有点恶心,记录一下。 详情介绍 1.需要处理的数据 let arr = [{ id:...
  • var arr=[ { id:"00000001", value:"3(Mi)" }, { id:"00000001", value:"6(La)" }, { id:"00000002", ...
  • 将图片左侧数据处理成右侧数据 ps: 顺带说下数据结构 直接看代码 这边封装成了一个函数 ... // 最终返回数组 for (let item of arr) { if (arrWarp.includes(item.classId) == false) { let obj =
  • 数组里某个属性相同对象合并成一个数组数组如下 let resData = [ { "name": "住院医疗最高报销", "tagName": "医疗", "insuredAmount": "6000" }, { "name": "身故赔付", "tagName": "寿险"...
  • 对象数组 var list = [ { melonbody: 8.4, strName: '损伤程度', level: '一等品' }, { colorvalue: 8.42, strName: '颜色', level: '一等品' }, { diameter: 8.4, strName: '直径', level: '一等品' }, {...
  • const list1 = [ {openId: 1}, {openId: 2}, {openId: 9}, {openId: 4}, {openId: 5} ] const list2 = [ {openId: 1}, {openId: 3}, {openId: 8}, {openId: 4}, ... s.openId === item.openId)).
  • var arr = [{ name:"1", type:"data", default:"1", relation:[{ id:"1", text:"2" }] },{ name:"2", type:"filter", ...
  • 面试题往往会遇到这样的笔试题,将以下数组对象合并相同值 var arr = [{ "name": "语文", "fraction": 80 }, { "name": "数学", "fraction": 70 ...
  • 1 数组合并1.1 concat 方法js的Array对象提供了一个叫concat()方法,连接两个或更多的数组,并返回结果。这里有一个问题,concat方法连接a、b两个数组后,a、b两个数组的数据不变,同时会返回一个新的数组。这样当...
  • 上篇文章讲解如何把数组对象中相同的key值合并,并且把对应的id放到一个数组中。这篇文章讲解另一种合并js数组对象中数据的场景。 1、获取原始的数组arr数据 2、创建一个map空对象和一个dest空数组,通过判断map中...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 111,447
精华内容 44,578
关键字:

数组中属性相同的对象合并