代码之家  ›  专栏  ›  技术社区  ›  firasKoubaa

映射对象属性并转换为字符串

  •  -5
  • firasKoubaa  · 技术社区  · 6 年前

    我有以下数据:

    let myInputArray = [
        {
            "id": 1,
            "commercialRanges": [
              {
                "rangeId": "305",
                "rangeName": "FIXE"
              },
              {
                "rangeId": "306",
                "rangeName": "POSTPAID"
              },
            ],
            "active": true,
            "pefName": "Alertes",
            "roles": "ADVISOR",
            "equipmentTypes": "PC",
          },
          ...
          {
            "id": 1523,
            "commercialRanges": [
              {
                "rangeId": "700",
                "rangeName": "POSTPAID"
              },
              {
                "rangeId": "500",
                "rangeName": "PREPAID"
              },
            ]
            ,
            "active": true,
            "pefName": "Alertes",
            "roles": "ADVISOR",
            "equipmentTypes": "PC",
          },
        ]
    

    转换属性“commercialRanges”的格式(对象数组) “值)

    我得到的数组如下所示:

    myResultArray = [
    {
        "id": 1,
        "commercialRanges": "FIXE,POSTPAID",
        "active": true,
        "pefName": "Alertes",
        "roles": "ADVISOR",
        "equipmentTypes": "PC",
      },
      ...
      {
        "id": 1523,
        "commercialRanges": "POSTPAID,PREPAID",
        "active": true,
        "pefName": "Alertes",
        "roles": "ADVISOR",
        "equipmentTypes": "PC",
      },
    ]
    

    “商业范围”

    "commercialRanges": [
          {
            "rangeId": "305",
            "rangeName": "FIXE"
          },
          {
            "rangeId": "306",
            "rangeName": "POSTPAID"
          },
        ]
    

    :

    "commercialRanges": "FIXE,POSTPAID"
    
    2 回复  |  直到 6 年前
        1
  •  0
  •   Nikhil Aggarwal    6 年前

    你可以试着用 Array.forEach , Array.map Array.join

    let myInputArray = [{"id":1,"commercialRanges":[{"rangeId":"305","rangeName":"FIXE"},{"rangeId":"306","rangeName":"POSTPAID"}],"active":true,"pefName":"Alertes","roles":"ADVISOR","equipmentTypes":"PC"}];
      
    myInputArray.forEach(o => o.commercialRanges = o.commercialRanges.map(r => r.rangeName).join(','));
    console.log(myInputArray);
        2
  •  0
  •   Patryk Cieszkowski    6 年前

    myInputArray 排列并减少 commercialRanges 一根绳子;为此,还需要使用循环。

    Array.prototype.reduce 你的方法 我的输入阵列 ,然后 Array.prototype.map 数组,因为这是实现这一点最简单/最优雅的方法。你也可以用 map 对于两个循环,以及 reduce . 真的由你决定。我来了

    let myInputArray = [
      {
          "id": 1,
          "commercialRanges": [
            {
              "rangeId": "305",
              "rangeName": "FIXE"
            },
            {
              "rangeId": "306",
              "rangeName": "POSTPAID"
            },
          ],
          "active": true,
          "pefName": "Alertes",
          "roles": "ADVISOR",
          "equipmentTypes": "PC",
        },
        ...
        {
          "id": 1523,
          "commercialRanges": [
            {
              "rangeId": "700",
              "rangeName": "POSTPAID"
            },
            {
              "rangeId": "500",
              "rangeName": "PREPAID"
            },
          ]
          ,
          "active": true,
          "pefName": "Alertes",
          "roles": "ADVISOR",
          "equipmentTypes": "PC",
        },
      ]
    
    const myInputString = myInputArray.reduce((arr, obj) => [
      ...arr,
      {
        ...obj,
        commercialRanges: obj.commercialRanges.map(rObj => rObj.rangeName).join(',')
      }
    ], [])
    

    循环两个数组

    const myInputString = myInputArray.map(obj => ({
        ...obj,
        commercialRanges: obj.commercialRanges.map(rObj => rObj.rangeName).join(',')
      })
    )