我正在使用黑客排名工具。
在那里,用户给出的所有输入都是一个字符串
因此用户给出的输入将是
1,2,3,4,5
可以视为"1"."2","3","4"
现在,我想将其转换为数字数组
if (input) {
if (input.split(',').indexOf("") > - 1) { console.log("invalid input") }
else { input = input.split(',').map(Number); }
} else {
input = [1, 2, 3, 5, 1, 5, 9, 1, 2, 8];
}
在这里,我检查是否指定了输入,如果是,它将采用用户定义的输入,否则它将采用我定义的输入作为 inpurt
现在,用户给出的输入也可以是字符串,在这种情况下我想抛出一个错误,指出“无效输入”
为此我想到了这样的事情
if (input.split(',').indexOf("") > - 1) { console.log("invalid input")
但这似乎不起作用,有人可以帮我弄清楚我该怎么做吗?
更新:当我说用户给出的输入可以是字符串时,我的意思是他可以给出类似“1,2,3,abc”的内容,这是无效输入(因为它包含abc)
示例: 1, 2, 3, 4 当控制台日志给出“1, 2, 3, 4”时,它是一个基本上包含数字的字符串(有效输入 )
但是
输入这个
1, 2, 3, 4abc 是无效输入,因为它由不是数字的 4abc
组成
所以当我这样做
input = input.split(',').map(Number);
对于上述内容,它可能会给我
[1,2,3,NaN]
最佳答案
保罗的回答几乎是正确的。不过,在过滤函数中,您还需要解析数字,然后检查它是否不是 NaN
。
const numbers = input.split(',')
.filter(n => !isNaN(parseInt(n, 10)))
关于javascript - 在数组中查找字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53846332/