首页 > 解决方案 > 在打字稿中拆分嵌套数组

问题描述

从服务我得到以下回复:

 "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"]

等等

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

标签: javascripttypescript

解决方案


这个片段将完成这项工作;结果将是您要查找的数组数组;它可以用更复杂的方式编写,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)


推荐阅读