marlsun 2023-02-25 21:49 采纳率: 84.2%
浏览 57
已结题

根据原数组属性值增加若干属性


let arr1 = [
  {
    Num: "0001",
    chr_Beijing: "xx",
    chr_Shanghai: "xx"
  },
  {
    Num: "0002",
    chr_Beijing: "xx",
    chr_Shanghai: "xx"
  },
   {
    Num: "0003",
    chr_Beijing: "xx",
    chr_Shanghai: "xx"
  }
]

let arr2 = [
  {
    Num: "0001",
    Type: "T1",
    T1_Beijing: "",
    chr_Beijing: "xx",
    T1_Shanghai: "",
    chr_Shanghai: "xx"  
  },
  {
    Num: "0002",
    Type: "T2",
    T2_Beijing: "",
    chr_Beijing: "xx",
    T2_Shanghai: "",
    chr_Shanghai: "xx"
  },
  {
    Num: "0003",
    Type: "T3",
    T3_Beijing: "",
    chr_Beijing: "xx",
    T3_Shanghai: "",
    chr_Shanghai: "xx"
  }
]

想实现:
我的初始数据如arr1这样的对象数组,有近千条各地的数据,想转换成arr2,自动加入下面的属性:

  1. 根据arr1的Num值,生成arr2的 Type属性,值为Num值去掉0的整数,并在前加“T”字符。
  2. 根据arr1中的属性名 chr_后的地名,与Type的值,合并成新的属性名,值为空。并自动插入相应的数组对象中。

恳请指教!

  • 写回答

6条回答 默认 最新

  • MarkHan_ 2023-02-25 21:56
    关注

    该回答引用GPTᴼᴾᴱᴺᴬᴵ
    可以按照以下步骤来实现:

    遍历arr1数组,生成对应的Type属性值,并根据Type的值合并生成新的属性名。

    遍历arr2数组,将新生成的属性名加入到数组对象中。

    将arr1中的chr_属性名与Type的值合并生成新的属性名,将其加入到arr2数组对象中,并赋值为空字符串。

    下面是代码实现:

    let arr1 = [
      {
        Num: "0001",
        chr_Beijing: "xx",
        chr_Shanghai: "xx"
      },
      {
        Num: "0002",
        chr_Beijing: "xx",
        chr_Shanghai: "xx"
      },
       {
        Num: "0003",
        chr_Beijing: "xx",
        chr_Shanghai: "xx"
      }
    ]
    
    let arr2 = [
      {
        Num: "0001",
        Type: "T1",
        T1_Beijing: "",
        chr_Beijing: "xx",
        T1_Shanghai: "",
        chr_Shanghai: "xx"  
      },
      {
        Num: "0002",
        Type: "T2",
        T2_Beijing: "",
        chr_Beijing: "xx",
        T2_Shanghai: "",
        chr_Shanghai: "xx"
      },
      {
        Num: "0003",
        Type: "T3",
        T3_Beijing: "",
        chr_Beijing: "xx",
        T3_Shanghai: "",
        chr_Shanghai: "xx"
      }
    ]
    
    for (let i = 0; i < arr1.length; i++) {
      let num = arr1[i].Num.replace(/^0+/, ''); // 去掉前导0的整数
      let type = "T" + num;
      let keys = Object.keys(arr1[i]);
      for (let j = 0; j < keys.length; j++) {
        let key = keys[j];
        if (key.indexOf("chr_") === 0) {
          let city = key.replace("chr_", "");
          let newKey = type + "_" + city;
          arr2[i][newKey] = "";
        }
      }
    }
    
    
    
    

    代码说明:

    1. 通过正则表达式去掉Num属性中的前导0。

    2. 通过Object.keys()方法获取arr1中对象的属性名数组。

    3. 遍历属性名数组,判断是否以chr_开头,如果是则生成新的属性名,并加入到arr2中对应的数组对象中。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(5条)

报告相同问题?

问题事件

  • 系统已结题 3月6日
  • 已采纳回答 2月26日
  • 创建了问题 2月25日

悬赏问题

  • ¥15 安装opengauss数据库报错
  • ¥15 【急】在线问答CNC雕刻机的电子电路与编程
  • ¥60 在mc68335芯片上移植ucos ii 的成功工程文件
  • ¥15 笔记本外接显示器正常,但是笔记本屏幕黑屏
  • ¥15 Python pandas
  • ¥15 蓝牙硬件,可以用哪几种方法控制手机点击和滑动
  • ¥15 生物医学数据分析。基础课程就v经常唱课程舅成牛逼
  • ¥15 云环境云开发云函数对接微信商户中的分账功能
  • ¥15 空间转录组CRAD遇到问题
  • ¥20 materialstudio计算氢键脚本问题