数组随机显示3个数字,我必须编写一个总结3个数字的代码,但数组有时会显示一个字符串:
[96, ".!asd", 182]
["@#$%", 5, 43]
[64, "bd", 48]
如果数组中有字符串,我想使用“if”返回“无效”。
if (...){
return not valid
}
如果有办法识别任何字符串,请告诉我代码吗?
答案 0 :(得分:2)
您可以使用Array.prototype.some()
查看您的数组是否包含NaN&#39>
var x = [96, ".!asd", 182]
var y = [96, 1000, 182]
console.log(x.some(isNaN))
console.log(y.some(isNaN))

答案 1 :(得分:1)
您可以使用isNaN来确定搅拌是否为数字
isNaN('123') //false
isNaN('Hello') //true
答案 2 :(得分:1)
使用对象 Number
:
if (Number.isNaN(+element_in_array)) return "Not Valid!!"
function sum(array) {
if (array.some((n) => Number.isNaN(+n))) {
return "Invalid data, at least one element is not a number.";
}
return array.reduce((a, n) => a + Number(n), 0);
}
console.log(sum([96, ".!asd", 182]))
console.log(sum(["@#$%", 5, 43]))
console.log(sum([64, "bd", 48]))
console.log(sum([64, 44, 48]))
答案 3 :(得分:1)
您应该使用isNaN
功能,如下所述:Is there a (built-in) way in JavaScript to check if a string is a valid number?
isNaN(123) // false
isNaN('123') // false
isNaN('1e10000') // false (This translates to Infinity, which is a number)
isNaN('foo') // true
isNaN('10px') // true
答案 4 :(得分:0)
您可以使用NaN
来确定所有元素是否都是数字,方法是使用一元加号将字符串转换为数字。如果成功,则会得到一个求和数,如果没有,则返回NaN
并求和。一个NaN
会破坏结果,结果为NaN
function not(fn) {
return function (v) {
return !fn(v);
};
}
function sum(array) {
return array.reduce((a, b) => +a + +b);
}
console.log([[96, ".!asd", 182], ["@#$%", 5, 43], [64, "bd", 48], [2, 3, 5]].map(sum).filter(not(isNaN)));
答案 5 :(得分:-1)
尝试使用 typeof 验证是否正在处理字符串。mdn typeof
答案 6 :(得分:-2)
您可以使用if type(x) == str
检查变量x是否为String类型。它是一个内置功能。请参阅官方python文档以了解更多信息。