删除每行的逗号

问题描述 投票:0回答:1

我能够按照我的预期格式化

jSon
数据,这是我迄今为止尝试过的以下代码片段:

const data = [
  {
    "id": 654298,
    "included": [
      {
        "id": 654298,
        "levelColumn": "DIM4_COL5",
        "levelColumnName": "Region",
        "isIncluded": true,
        "tabs": [
          {
            "tabId": 640111,
            "tabName": "Growth"
          },
          {
            "tabId": 640031,
            "tabName": "Direct Sales"
          },
          {
            "tabId": 640021,
            "tabName": "Operator Review"
          }
        ],
        "levels": [
          {
            "permValue": "WEST FS",
            "permName": "WEST FS"
          }
        ]
      }
    ],
    "excluded": []
  }
];

var formatted = "Included \n"  + 
data.map(c => c.included.map(d => `\nFor Level ` 
+ d.levelColumnName 
+ `\nTabs ${d.tabs.map(e => `\n- ` 
+ e.tabName.toString().split(",").join("\n \n"))}\n` + 
`\nPermissions ${d.levels.map(e => `\n- ` 
+ e.permName.toString().split(",").join("\n \n"))}\n` ));

console.log(formatted);

可能还有改进的地方,但目前这就是我所得到的。

我现在得到的输出

Included 

For Level Region
Tabs 
- Growth,
- Direct Sales,
- Operator Review

Permissions 
- WEST FS

和我预想的差不多。不知何故,我无法从 Tabs 分组的每一行中删除逗号。似乎如果Permissions分组有多个值,那么看起来是一样的。

我希望

split(",").join("\n \n")
能够消除这个问题,但没有成功。有什么办法去掉最后一个逗号吗?

arrays json angular typescript angular15
1个回答
0
投票

您正在(隐式)在此处的数组上调用

String()

`Tabs ${d.tabs.map(e => `\n- ` 
+ e.tabName.toString().split(",").join("\n \n"))}`

您的真实数据中没有逗号,因此

split
不执行任何操作。
map
的结果是一个包含三个项目的数组:
['\n- Growth', '\n- Direct Sales', '\n- Operator Review']
`${array}`
相当于
String(array)
,它对所有数组项调用
String()
,最后用逗号连接结果。

相反,您希望使用换行符连接数组,然后插入结果字符串:

`Tabs\n${d.tabs.map(e => `- ${e.tabName}`).join('\n')}`
© www.soinside.com 2019 - 2024. All rights reserved.