输入:
第一行
第二行 第三行
第四行
代码:
let res = str.split('\n\n')
for (let result of res) {
res = `<p class="blockquote">${res.replace(/^> /gm, '')}</p>`
}
console.log(`text: ${res}`)
str.split('\n\n')
输出first line,second line third line,fourth line
。我的期望。
现在,我想使用for
循环来获取每个项目,并使用p
标记将其包围。但是,我收到以下错误:
TypeError: undefined is not a function
我对ES6不太熟悉。循环有问题吗?
答案 0 :(得分:3)
是的,有些不对劲。两件事。
res = `<p class="blockquote">${res.replace(/^> /gm, '')}</p>`
res最初是一个数组,因此没有replace
方法。那是你得到的错误。
另一方面,一旦你解决了这个问题(用循环变量res
替换result
),就是将结果字符串分配给res
。我不确定你的期望,但我想这不会那样。
答案 1 :(得分:3)
在res
循环内为for
变量赋值的问题。因此,在第一个循环步骤之后,我们将在res
中有另一个值,循环将结束;
试试这段代码:
let str = 'first line\n\nsecond line third line\n\nfourth line';
let res = str.split('\n\n')
for (let result of res) {
let i = `<p class="blockquote">${result.replace(/^> /gm, '')}</p>`
console.log(i);
}