我试图在每次换行符出现时扩展数组,但似乎无法弄清楚。我正在获取文本区域的内容,并根据每个tab
的出现位置创建一个数组。
我创建了一个名为lines
的4元素数组,如下所示:["A widget:↵", "X component;↵", "Y component; and↵", "Z component.↵↵"]
我最终想要一个9元素的数组,像这样:["A widget:", "↵", "X component;", "↵", "Y component; and", "↵", "Z component.," "↵", "↵"]
我当前的代码是这样:
for(var i = 0; i < lines.length; i++){
var newlinehere = lines[i].indexOf("\n");
if (newlinehere > 0){
lines.splice(newlinehere, 0, "NEWLINEHERE");
}
}
我找不到↵
来知道在哪里拼接数组。 “ \ n”不起作用。
关于如何进行这项工作的任何想法?
编辑:我编辑了注释以更正原始代码。最初我输入错误。
答案 0 :(得分:0)
arr.flatMap(s => s.split(/(↵)/)).filter(x => x.length)
# => ["A widget:", "↵", "X component;", "↵", "Y component; and", "↵",
# "Z component.", "↵", "↵"]
split
在定界符上分割;但如果正则表达式中有捕获组,它也会在split数组中产生定界符。使用flatMap
,我们将所有字符串拆分并将所有结果连接到一个数组中。但是,如果定界符是在字符串的开头或结尾,那么我们将在其中得到一个空段,因此在filter
的末尾将其删除。
这是假设您具有“弯角向下箭头”(U + 21B5),而不是“线路进给(LF)”(U + 000A)或“回车(CR)”(U + 000D)。如果您有后者,请适当地将↵
替换为\n
或\r
。 (如果您写了["A widget:\n", "X component;\n", "Y component; and\n", "Z component.\n\n"]
,也会更加清楚)
编辑:flatMap
并非在所有平台上都可用;您可以改用它:
[].concat(...arr.map(s => s.split(/(↵)/))).filter(x => x.length)
答案 1 :(得分:0)
您可以结合使用Array.map()
和Array.concat()
方法来拆分和展平最终数组。
var items = [ "item1\n", "item2\n\n", "item3" ]
var items2 = items.map(function(item){
return item.split("\n");
})
var flatten = [].concat.apply([], items2)
console.log(flatten)