我正在进行JS练习,并且当给定数组包含字符串时我试图返回undefined,而是返回NaN。什么是返回undefined的最佳方式?任何帮助表示赞赏!
function cubeOdd(arr) {
var count = 0;
for(var i = 0; i < arr.length; i++) {
if(arr[i]==="") {
return undefined;
}
else if(arr[i] % 2 !== 0) {
count += Math.pow(arr[i],3);
}
}
return count;
}
cubeOdd([2,3,4,'g']);
答案 0 :(得分:0)
因为'g' !== ''
使用typeof
例如typeof arr[i] !== 'number'
或typeof arr[i] === 'string'
function cubeOdd(arr) {
var count = 0;
for(var i = 0; i < arr.length; i++) {
if(typeof arr[i] !== 'number') {
return undefined;
}
else if(arr[i] % 2 !== 0) {
count += Math.pow(arr[i],3);
}
}
return count;
}
console.log(cubeOdd([2,3,4,'g']), cubeOdd([2,3,4]));
&#13;
答案 1 :(得分:0)
arr[i]===""
测试它是否是空字符串,而不是任何字符串。
测试:
typeof arr[i] === "string"
答案 2 :(得分:0)
您可以使用string
检查变量是否为typeof myVariable
。
您使用arr[i]===""
检查arr[i]
是否为空字符串
function cubeOdd(arr) {
var count = 0;
for(var i = 0; i < arr.length; i++) {
if(typeof arr[i] === 'string')
return undefined;
else if(arr[i] % 2 !== 0)
count += Math.pow(arr[i],3);
}
return count;
}
console.log(cubeOdd([2,3,4,'g']));
&#13;
答案 3 :(得分:0)
只需用
替换以下行 if(arr[i]==="") {
if(typeof arr[i] === 'string') {
目前,您只检查数组的值是否为空字符串,但是您要检查其类型以确保其为字符串。
答案 4 :(得分:0)
我认为你应该像原型一样使用类型检查。它将跨浏览器工作。下面是您更新的代码,我假设如果值不是Number
,则数组将返回undefinedfunction cubeOdd(arr) {
var count = 0;
for(var i = 0; i < arr.length; i++) {
if(Object.prototype.toString.call(arr[i])!=="[object Number]") {
return undefined;
}
else if(arr[i] % 2 !== 0) {
count += Math.pow(arr[i],3);
}
}
return count;
}
cubeOdd([2,3,4,'g']);
答案 5 :(得分:0)
问题与您的if条件有关。你正在检查一个空字符串。只需使用
isNaN()
function cubeOdd(arr) {
var count = 0;
for(var i = 0; i < arr.length; i++) {
if(isNaN(arr[i])) {
return undefined;
}
else if(arr[i] % 2 !== 0) {
count += Math.pow(arr[i],3);
}
}
return count;
}
cubeOdd([2,3,4,'g']);
isNaN是一个全局javascript函数,用于检查给定值是否不是数字。 参考:isNaN() API
PS:只更改了代码段的条件。