我能够按照我的预期格式化
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")
能够消除这个问题,但没有成功。有什么办法去掉最后一个逗号吗?
您正在(隐式)在此处的数组上调用
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')}`