typescript - 排列多级 Concat 选定元素并修剪为一个
问题描述
对于book
,我想循环每个页面,然后是每个内容元素,修剪前导和尾随空格
var book = {
"pages": [
{
"page": "1",
"content": [" c1 ", " c2 "],
"note": ["n1", "n2"]
},
{
"page": "2",
"content": [" c3", "c4 "],
"note": "any"
},
{
"page": "3",
"content": [" c5", " c6 "],
"note": "any"
}
],
"x": 1,
"y": 2
}
产生像这样的输出
c1
c2
c3
c4
c5
c6
此代码无法生成x
var x = book.pages.forEach(cn =>
{
cn.content.map(c=> c.trim()); // this line test ok
});
var y = x.join("\n"); // error: x is undefined
解决方案
问题出在forEach
. 它返回未定义。map
如果您期待回报,您应该使用。但由于您需要展平阵列,因此flatMap
更适合:
var book = {
"pages": [
{
"page": "1",
"content": [" c1 ", " c2 "],
"note": ["n1", "n2"]
},
{
"page": "2",
"content": [" c3", "c4 "],
"note": "any"
},
{
"page": "3",
"content": [" c5", " c6 "],
"note": "any"
}
],
"x": 1,
"y": 2
}
let contents = book.pages.flatMap(page => page.content.map(x => x.trim()))
console.log(contents.join('\n'))
推荐阅读
- mysql - 选择存储 JSON 数据的数据库
- c - 与 omp atomic 并行化
- r - fread 挂在某些类型的文件上
- azure-devops - 如何自动回滚发布?
- php - Laravel:简单的表单获取请求返回 500 错误
- javascript - 如何从下拉边框底部中删除边框颜色?
- sql - 用于自动删除、下载和恢复 SQL 数据库的 Powershell 脚本未完全执行
- c# - 尝试将 BsonDocument 反序列化为类时出现 System.FormatException
- kubernetes - GKE kubernetes webhook 支持
- python - 在生成器对象上使用 joblib.Parallel 而不将生成器加载到 ram