【发布时间】:2020-02-11 20:15:43
【问题描述】:
我有这个模式的文本文件。用 enter 或 \n 分隔的数字列表。在文件末尾有很多输入
1
2
3
... //my main is enter
当我用这段代码读取这个文件并记录内容时,输出是并且 typeof 是字符串:
var contents = fs.readFileSync('./myFile', 'utf8');
1
2
3
...
然后我想用\n 拆分此数据并将此字符串转换为数组。使用此代码。但最终答案是:
contents.split("\n")有数据:[1, 2, 3, '', '', '', '']
var listOfNationalCode = contents.split("\n").map(function (n) {
if (n != '') {
return n;
}
});
console.log(listOfNationalCode);
[ '1',
'2',
'3',
undefined,
undefined,
undefined,
undefined ]
我现在应该怎么做才能在这段代码中不返回undefined?我有[1, 2, 3]
【问题讨论】:
-
if (n != '') { return n; }返回n如果它不是一个空字符串否则未定义。如果没有其他return,所有函数都会隐式返回undefined。此外,映射是一种 1:1 操作 - 原始数组的每个成员都会产生一个映射值。您可能正在寻找Array#filter。 -
在
.split()之前使用.trim():contents.trim().split("\n")... -
@VLAZ:既然您的评论实际上就是答案,为什么不这样发布呢?在 SO 上,让 cmets 比答案更有用变得很常见,这很痛苦,因为 cmets 难以阅读且无法在 Google 上搜索。
-
@georg 我一直在寻找一个好的欺骗目标。毕竟,这不是一个新问题。我认为我们不需要数百个基本上是“
map是这样工作的,filter是这样工作的”的答案。 -
@VLAZ,你的评论对我有帮助。
标签: javascript node.js