【问题标题】:How to execute a loop in a dedent block?如何在凹痕块中执行循环?
【发布时间】:2021-07-01 22:25:40
【问题描述】:

有谁知道我如何执行

req.body.documents.forEach(element => {
    console.log(element['_index']);
    console.log(element['_id']);
    console.log(element['_source'].uuid);
    console.log('--------------------');
});

dedent 块内?

const description = dedent`

Date:     ${req.body.date}
Alert ID: ${req.body.alert_id}
    
LOG ENTRIES
===========

< Execute loop here >
`;

或者这需要用模板引擎来解决吗?如果,有什么建议如何实施?

【问题讨论】:

  • 什么是dedent 块?
  • @jfriend00 我现在在 OP 中添加了指向 npm 的链接 =) npmjs.com/package/dedent
  • 但这只是一堆控制台日志;重点是什么?您可以在字符串模板之外进行控制台日志记录。您是否正在尝试获取您当前正在进入该字符串的信息?在哪种情况下创建一个字符串并将其包含在现有的插值中?
  • @DaveNewton 是的,这正是我想要尝试的。

标签: javascript node.js templates ecmascript-6


【解决方案1】:

请记住,您甚至可以在 template literals 中插入复杂的表达式:

`LOG ENTRIES
===========

${
  req.body.documents.map(element => 
    [element._index, element._id, element._source.uuid].join('\n')
  ).join('--------------------\n')
}

`

然后dedent 只会处理结果字符串中的额外缩进。

【讨论】:

  • 是否可以在每个变量的前面写上文本?例如。 Index: &lt;index value&gt; \n?
  • 当然,您可以在数组中的每个表达式前面加上所需的字符串,例如['Index ' + element._index, 'ID ' + element._id, ...]。您甚至可以使用nesting templates(${} 内的刻度)。
  • 非常感谢! =)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-18
  • 2012-05-01
  • 2018-09-26
  • 2017-06-30
  • 2019-03-23
相关资源
最近更新 更多