代码之家  ›  专栏  ›  技术社区  ›  DMS-KH

如何在typescript中分离具有特定数组前缀的对象数组

  •  0
  • DMS-KH  · 技术社区  · 6 年前

    我计划用索引规范将这些类型的数组分开来准备这个数组。

    默认数据格式

    [{
          "Emp_code": "EM-00001",
          "Emp_title": "11",
          "Emp_firstName": "22",
          "Emp_lastName": "33",
          "Emp_dateOfBirth": "20-10-1985",
          "Con_title": "title",
          "Con_email": "email",
          "Con_addres": "address",
          "Con_phone": "phone"
        }]
    

    通缉格式

    [{
      "emp": {
          "code": "EM-00001",
          "title": "11",
          "firstName": "22",
          "lastName": "33",
          "dateOfBirth": "20-10-1985",
      },
      "con": {
          "Con_title": "title",
          "Con_email": "email",
          "Con_addres": "address",
          "Con_phone": "phone"
      }
    }]
    
    3 回复  |  直到 6 年前
        1
  •  1
  •   Slava Utesinov    6 年前

    var item = {
      "Emp_code": "EM-00001",
      "Emp_title": "11",
      "Emp_firstName": "22",
      "Emp_lastName": "33",
      "Emp_dateOfBirth": "20-10-1985",
      "Con_title": "title",
      "Con_email": "email",
      "Con_addres": "address",
      "Con_phone": "phone"
    }
    var data = [item, item];
    
    var res = []
    
    for (var item of data) {
      var temp = {};
      res.push(temp);
      for (var prop in item) {
        var parts = prop.split('_');
        var prefix = parts[0].toLowerCase();
        temp[prefix] = temp[prefix] || {};
        temp[prefix][prefix === 'emp' ? parts[1] : prop] = item[prop]
      }
    }
    
    console.log(res);
        2
  •  2
  •   Adrian Brand    6 年前

    您可以将属性名减少到[emp:,con:]的起始累加器,并且每次迭代都可以将属性添加到累加器中的相应项。

    const data = [{
          "Emp_code": "EM-00001",
          "Emp_title": "11",
          "Emp_firstName": "22",
          "Emp_lastName": "33",
          "Emp_dateOfBirth": "20-10-1985",
          "Con_title": "title",
          "Con_email": "email",
          "Con_addres": "address",
          "Con_phone": "phone"
        }];
        
    const format = obj =>
      Object.getOwnPropertyNames(obj[0]).reduce(
        (acc, prop) => {
          if (prop.startsWith('Emp_')) {
            acc[0].emp[prop.replace('Emp_', '')] = obj[0][prop];
          } else {
            acc[1].con[prop] = obj[0][prop];
          }
          return acc;
        },
        [{ emp: {} }, { con: {} }]
      );
     
     console.log(format(data));
        3
  •  1
  •   Prasad Wargad    6 年前

    下面的脚本使用循环检查元素,然后将它们拆分为前缀和后缀。然后检查结果数组中是否存在前缀。如果没有,则将该前缀添加到数组中并准备结果。

    var a = [{"Emp_code": "EM-00001", "Emp_title": "11", "Emp_firstName": "22", "Emp_lastName": "33", "Emp_dateOfBirth": "20-10-1985", "Con_title": "title", "Con_email": "email", "Con_addres": "address", "Con_phone": "phone"}];
    var b = [];
    $.each(a, function(arrKey, arrData){
        var tempArr = {};
        $.each(arrData, function(key, value){
            var arrKey = key.split('_');
            var prefix = arrKey[0];
            var suffix = arrKey[1];
            if( $.inArray(prefix, Object.keys(tempArr)) == -1 ) {
                tempArr[prefix] = {};
            }
            tempArr[prefix][suffix]=value;
        });
        b.push(tempArr);
    });
    console.log(b);