zoukankan      html  css  js  c++  java
  • 一:JS 数组对象根据相同key合并成新的数组对象(将一维数组转为多维数组)

    将数组中有相同的key合并为新的数组,其实也就是将一维数组修改为多维数组:

    let data = [
      { name: "苹果", orderCode: "AAAAAAAA" },
      { name:
    "橘子", orderCode: "BBBBBBBB" },
      { name:
    "香蕉", orderCode: "CCCCCCCCC" },   { name: "苹果", orderCode: "DDDDDDDD" },   { name: "橘子", orderCode: "EEEEEEE" },   { name: "苹果", orderCode: "FFFFFFF" }, ];

    想要修改为:

    const newAr = [
      {
        name: "苹果",
        goodsList: [
              { name: "苹果", orderCode: "AAAAAAAA" },
              { name: "苹果", orderCode: "DDDDDDDD" },
              { name: "苹果", orderCode: "FFFFFFF" },
            ],
          },
      {
        name: "橘子",
        goodsList: [{ name: "橘子", orderCode: "BBBBBBBB" }],
      },
      {
        name: "香蕉",
        goodsList: [{ name: "香蕉", orderCode: "CCCCCCCCC" }],
      },
    ];

    代码:

    方法一:

    let tempList = [];
        let resultList = [];
        data.map((item) => {
          if (tempList.indexOf(item.name) === -1) {
            tempList.push(item.name);
            resultList.push({
              name: item.name,
              goodsList: [],
            });
          }
        });
    
        resultList.map((item) => {
          data.map((items) => {
            if (item.name === items.name) {
              item.goodsList.push(items);
            }
          });
    });

    方法二:

    let tempArr = [];
        let afterData = [];
        for (let i = 0; i < data.length; i++) {
          if (tempArr.indexOf(data[i].name) === -1) {
            afterData.push({
              name: data[i].name,
              origin: [data[i]],
            });
            tempArr.push(data[i].name);
          } else {
            for (let j = 0; j < afterData.length; j++) {
              if (afterData[j].name == data[i].name) {
                afterData[j].origin.push(data[i]);
                break;
              }
            }
          }
    }
  • 相关阅读:
    第3章 神经网络
    OpenCV基础(一)---图像卷积运算
    OpenCV-自定义harris检测
    C++类型转换
    剑指offer之【二叉搜索树与双向链表】
    剑指offer之【复杂链表的复制】
    剑指offer之【二叉树中和为某一值的路径】
    剑指offer之【二叉搜索树的后序遍历序列】
    剑指offer之【从上往下打印二叉树】
    剑指offer之【栈的压入、弹出序列】
  • 原文地址:https://www.cnblogs.com/liumcb/p/14781079.html
Copyright © 2011-2022 走看看