我的Javascript函数的错误,如果给出数组则应该返回数组的长度,否则返回零

时间:2014-08-10 23:37:35

标签: javascript arrays

我不太了解编程,现在我正在学习Javascript几天,所以我的问题可能很容易,提前道歉:

问题是:

  

创建一个名为'arrayCounter'的函数,该函数接受一个数组参数。该函数必须返回传入的数组的长度,如果传入'string','number'或'undefined'值,则返回0。

我做到了这一点:

function arrayCounter(i) {
    var no = ['string', 'undefined', 'number'];
    for (j = 0; j < no.length; j += 1) {
      if(typeof(i) === no[j]) {return 0}
    }
    return i.length

为什么我的代码错了?

1 个答案:

答案 0 :(得分:0)

你应该使用JavaScript的Array.isArray(arg)函数,它告诉你一些提供的参数arg是否是一个数组。使用此函数,我们将检查传递给函数i的参数arrayCounter是否为数组。如果是,我们返回length。否则,我们会返回0,如下所示:

function arrayCounter(i) {
    // if the argument is an array, return its length
    if (Array.isArray(i)) {
        return i.length;
    }
    // otherwise, return zero
    else {
        return 0;
    }
};

如果您希望您的代码可读性稍差但更简洁,您可以使用JavaScript的条件三元运算符,如上所述(如@adeneo提到的那样):

function arrayCounter(i) {
    return (Array.isArray(i) ? i.length : 0);
};