如何检查传递的参数是否为数组数组

How to check if passed parameter is an array of arrays

本文关键字:数组 参数 是否 何检查 检查      更新时间:2023-09-26

我需要只允许像function([a, b, c, d])function(a, b, c, d)这样的向量进入我的程序。我需要编写一个单元测试,当我获得形式为function([a, b][c, d])function([a][b][c][d])的参数时,它会给出语法错误。

请注意,我在这里不仅仅是在寻找一个数组。我需要过滤掉多个阵列,只接受一维阵列(或者根本没有阵列)

如何检查此类参数的存在?

如果函数总是接受一个或多个参数,则可以通过测试Array.isArray(arguments[i])进行检查。

function myMethod(param){
    if(param instanceof Array)
    {
        // check that no element is an array
        return !param.some(function(item){
            return item instanceof Array;
        });
    }
    return false;
}
console.log(myMethod([1,2,3,4])); // true
console.log(myMethod([1,2,3,4, [1,2]])); // false

我真的不明白你怎么会有一个可以是a,b,c,d[a,b,c,d]的输入——你的原型是什么?

如果它是数组还是非,您总是可以检查它的子级

x = [[1,2,3], [4,5,6]];
if(Array.isArray(x))//true since x is a array
    if(Array.isArray(x[0])) //true since x[0] is array
        console.log('x is two dimensional array')