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

Javascript 映射对象属性并转换为字符串,javascript,angular,typescript,ecmascript-6,Javascript,Angular,Typescript,Ecmascript 6,我收集了以下数据: let myInputArray = [ { "id": 1, "commercialRanges": [ { "rangeId": "305", "rangeName": "FIXE" }, { "rangeId": "306", "rangeName": "POSTPAID"

我收集了以下数据:

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的对象格式数组 ->到一个简单字符串:它连接不同的rangeName值

我得到的数组如下所示:

因此,我应该转换嵌入的对象commercialRanges

致:


您可以尝试使用,和

让myInputArray=[{id:1,commercialRanges:[{rangeId:305,rangeName:FIXE},{rangeId:306,rangeName:PostPad}],active:true,pefName:Alertes,roles:ADVISOR,equipmentTypes:PC}]; myInputArray.forEacho=>o.commercialRanges=o.commercialRanges.mapr=>r.rangeName.join',';
console.logmyInputArray 其基本思想是循环使用myInputArray数组,并将commercialRanges减少为字符串;为此,您还需要使用循环

我建议在myInputArray上使用Array.prototype.reduce方法,然后在commercialRanges数组上使用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(',')
  }
], [])
备选案文2: 使用Array.prototype.map循环两个数组


到目前为止,您尝试了什么?@firasKoubaa请记住,这种方法会变异myInputArray。
"commercialRanges": [
      {
        "rangeId": "305",
        "rangeName": "FIXE"
      },
      {
        "rangeId": "306",
        "rangeName": "POSTPAID"
      },
    ]
"commercialRanges": "FIXE,POSTPAID"
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(',')
  })
)