在打字稿中拆分嵌套数组

时间:2020-05-28 20:26:38

标签: javascript typescript

从服务中我得到以下答复:

 "rows": [
    [
      "stravi/aa",
      "202001",
      "59",
      "51",
      "2558.98",
      "0.5358894453719162",
      "1.9204668112983725",
      "140",
      "2.3466309084813943"
    ],
    [
      "stravi/ab",
      "202003",
      "3591",
      "349",
      "2246.09",
      "0.41838214",
      "3.57603358",
      "50",
      "4.82115474"
    ],
    [
      "stravi/ac",
      "202007",
      "3354",
      "25",
      "1975.76",
      "0.74220667708",
      "1.12321555541",
      "11",
      "0.9324532454"
    ]
  ]

我想将嵌套数组下面的数组拆分为9个数组-在1个数组中,每个数组中有1行,在2个数组中->第二行,等等。=>

["stravi/aa", "stravi/ab", "stravi/ac"]
[202001", "202003","202006"]

我正在尝试使用拆分,映射,过滤器...但是我还是一团糟...

1 个答案:

答案 0 :(得分:1)

此代码段将完成工作;结果将是您要查找的数组的数组;可以使用reduce()以更复杂的方式编写,但我更喜欢可读性强的版本:

let result = [];
rows.forEach( row => {
  row.forEach( (item,index) => {
    if(result[index]){
      result[index].push(item)
    }else{
      result[index] = [item]
    }
  })
})

let  rows = [
    [
      "stravi/aa",
      "202001",
      "59",
      "51",
      "2558.98",
      "0.5358894453719162",
      "1.9204668112983725",
      "140",
      "2.3466309084813943"
    ],
    [
      "stravi/ab",
      "202003",
      "3591",
      "349",
      "2246.09",
      "0.41838214",
      "3.57603358",
      "50",
      "4.82115474"
    ],
    [
      "stravi/ac",
      "202007",
      "3354",
      "25",
      "1975.76",
      "0.74220667708",
      "1.12321555541",
      "11",
      "0.9324532454"
    ]
  ];

let result = [];
rows.forEach( row => {
  row.forEach( (item,index) => {
    if(result[index]){
      result[index].push(item)
    }else{
      result[index] = [item]
    }
  })
})
console.log(result)