数组处理相关

数组平均分结果是多个数组的集合

输入:

 [
     { key1: 1, name1: 2 },
     { key1: 3, name1: 4 },
     { key1: 1, name1: 2 },
     { key1: 3, name1: 4 }
 ]

结果:

[
     [
         { key1: 1, name1: 2 },
         { key1: 3, name1: 4 }
     ],
     [
         { key1: 1, name1: 2 },
         { key1: 3, name1: 4 }
     ]
 ]

代码如下

//num是平均分几份
function dealArrAvgFun(arr, num = 1) {
      if (num == 1) return arr;
      let newArr = [];
      for (let i in arr) {
          newArr[i % num] == undefined && (newArr[i % num] = []);
          newArr[i % num].push(arr[i]);
      }
      return newArr;
  },

数组平均分,在对应后创建key值,添加对象

输入

 [
     { key1: 1, name1: 2 },
     { key1: 3, name1: 4 },
     { key1: 1, name1: 2 },
     { key1: 3, name1: 4 }
 ]

结果

[
     { key1: 1, name1: 2, key2: 2, name2: 3 },
     { key1: 3, name1: 4, key2: 2, name2: 3 }
 ]

代码如下

//num是平均分几份
function dealArrMergeObj(body, num = 1) {
      if (num == 1) return body;
      let bodyData = [];
      let headerData = [];
      for (let i = 0; i < body.length; i += num) {
          let obj = {};
          for (let j = 0; j < num; j++) {
              if (!body[i + j]) break;
              obj = Object.keys(body[i + j]).reduce((pre, e) => {
                  let bodyChild = body[i + j][e];
                  if (typeof bodyChild == 'object') {
                      bodyChild = JSON.stringify(bodyChild);
                  } else {
                      bodyChild = String(bodyChild);
                  }
                  // console.log(typeof body[i + j][e]);
                  pre[e + j.toString()] = bodyChild;
                  //头部数组处理,处理一次即可
                  if (i == 0) {
                      headerData.push(e + j.toString());
                  }
                  return pre;
              }, obj);
              //保证样式的
              if (i == 0) {
                  headerData.push('empty' + j.toString());
              }
          }
          bodyData.push(obj);
      }
      return { headerData, bodyData };
  },
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值