在Javascript中检查数组的所有元素类型的问题

时间:2017-06-29 00:44:41

标签: javascript typeof

我试图在javascript中检查数组的所有元素类型。我实际上正在编写一个只接受带数字的数组的函数。

所以

[1,2,-3,-4,0]  //valid input
[1,2,-3b,-4a,0]  //Invalid input

我试图通过使用javascript的every()函数来实现以下目的,

try {
                    if (!inputArr.every(x => typeof x === 'number')) {
                           throw 'input array should only have numbers';
                    }
                }
                catch (err) {
                    return err;
                }

但是收到错误。当我进一步调查它而不是意识到这一点时,

typeof 1 // number
typeof 1a // error

所以我们无法检查字母数字值的类型。有人可以在这里建议一些选项。我使用的是纯粹的JavaScript ES5或ES6。

1 个答案:

答案 0 :(得分:0)

[1,2,-3b,-4a,0]语法无效,您的程序甚至无法运行。因此,我们假设输入是一个字符串,如"[1,2,-3b,-4a,0]"中所示。在那种情况下:

function check(input) {
  try {
    const array = JSON.parse(input);
    return array.every(x => typeof x === 'number');
  } catch(e) {
    return false;
  }
}