2017-07-18 162 views
0

我正在研究一个JS练习,我试图在给定的数组包含一个字符串时返回undefined,而是返回NaN。什么是最好的方式来返回undefined?任何帮助表示赞赏!返回undefined JS

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

您是否尝试过使用'cubeOdd(['']);'用空字符串?' –

+0

您比较空字符串,但''g“!==”“'。查看'typeof'或'isNaN()' – Thomas

回答

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]));

0
arr[i]==="" 

,测试,看它是否是一个空字符串,不是任何字符串。

测试为:

typeof arr[i] === "string" 
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']));

0

只需更换与

if(arr[i]==="") { 

if(typeof arr[i] === 'string') { 

目前以下行,你只检查是否数组的值是一个空字符串,但你想检查它的类型来确保它是一个字符串。

0

我认为你应该使用类型检查的原型。它将跨浏览器工作。下面是你更新的代码,我假设数组将返回undefined如果值不是数字

function 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']); 
0

问题是与你的条件。你正在检查一个空字符串。简单地使用

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:只有您的代码段的条件已被更改。