编辑:
为什么这不是一个重复的问题
这个问题特别地解决了一个问题,即使用Number(str)
将空字符串以及任意数量的空格字符转换为0
。
看一下以下代码片段:
convertBtn.addEventListener('click', () => console.log(toArrayOfNumber(foo.value)))
const toArrayOfNumber = str => str.split(',').map(Number);
<input type="text" id="foo" value="1,2,4,-1" />
<button type="button" id="convertBtn">convert to array of numbers</button>
值
,一切都正常。现在我想使它对以下值安全故障:
,
, ,,
Number(“”)
和Number(“ ”)
都返回0
(这不是我想要的,因为根据我的用例,我不希望将“”
或任何数量的空格视为数字
)。所以我想出了这个:
convertBtn.addEventListener('click', () => console.log(toArrayOfNumber(foo.value)))
const toArrayOfNumber = str => str.split(',').filter(x => x.trim() !== "").map(Number);
<input type="text" id="foo" value="1,2,4,-1,,, ,, 11" />
<button type="button" id="convertBtn">convert to array of numbers</button>
这感觉很尴尬,我希望有一个显而易见且更好的解决方案,但我没有看到。
.map(Number)
来缩短你的映射,而不是使用回调函数(参数已经默认)。 - Sterling Archerarr = '1,2,4,-1,,, ,, 11'.split(',').filter(Number).map(Number);
// ((5) [1, 2, 4, -1, 11]
- Sterling ArcherisNaN(" ")
返回的结果是false
。同样的,isNaN("")
也是如此。 - connexo