Javascript 如何检查JS中是否设置了多维数组项?

Javascript 如何检查JS中是否设置了多维数组项?,javascript,arrays,multidimensional-array,isset,Javascript,Arrays,Multidimensional Array,Isset,如何检查JS中是否设置了多维数组项 w[1][2] = new Array; w[1][2][1] = new Array; w[1][2][1][1] = 10; w[1][2][1][2] = 20; w[1][2][1][4] = 30; 如何检查是否设置了w[1][2][1][3] 带有if(类型w[1][2][1][3]!=“未定义”)的解决方案不起作用 我不想使用对象而不是数组。在检查其子元素之前,您没有检查以前的数组元素是否存在,因为如果父元素不存在,子元素就不存在 if(

如何检查JS中是否设置了多维数组项

w[1][2] = new Array;
w[1][2][1] = new Array;
w[1][2][1][1] = 10; w[1][2][1][2] = 20; w[1][2][1][4] = 30;
如何检查是否设置了
w[1][2][1][3]

带有
if(类型w[1][2][1][3]!=“未定义”)的解决方案
不起作用


我不想使用对象而不是数组。

在检查其子元素之前,您没有检查以前的数组元素是否存在,因为如果父元素不存在,子元素就不存在

if( 
    typeof(w) != 'undefined' &&
    typeof(w[1]) != 'undefined' &&
    typeof(w[1][2]) != 'undefined' &&
    typeof(w[1][2][1]) != 'undefined' &&
    typeof(w[1][2][1][3]) != 'undefined' &&
  ) {
    //do your code here if it exists  
  } else {
    //One of the array elements does not exist
  }

如果发现前面的任何元素不存在,if将运行
else
子句中的代码。如果前面的任何检查返回false,它将停止检查其他检查。

下面是一种更通用的方法,您可以通过扩展
数组的原型来完成此操作:

Array.prototype.check = function() {
    var arr = this, i, max_i;
    for (i = 0, max_i = arguments.length; i < max_i; i++) {
        arr = arr[arguments[i]];
        if (arr === undefined) {
            return false;
        }
    }
    return true;    
}

w.check(1, 2, 1, 4); //will be true if w[1][2][1][4] exists
Array.prototype.check=function(){
var arr=这个,i,max_i;
对于(i=0,max_i=arguments.length;i
或者,如果您不喜欢原型扩展,可以使用单独的函数:

function check(arr) {
    var i, max_i;
    for (i = 1, max_i = arguments.length; i < max_i; i++) {
        arr = arr[arguments[i]];
        if (arr === undefined) {
            return false;
        }
    }
    return true;
}

check(w, 1, 2, 1, 4); //will be true if w[1][2][1][4] exists
功能检查(arr){
var i,max_i;
对于(i=1,max_i=arguments.length;i
如果(w[1][2][1][3]!='undefined')
怎么办?这将检查
w[1][2][1][3]
值是文本“undefined”,那么
的类型以什么方式不起作用?@Patrick Evans,它返回错误:TypeError:w[w1][w2][w3]在代码中未定义:如果(typeof w[w1][w2][w3][w4]!='undefined'){返回w[w1][w2][w3];]然后,在检查其他数组元素之前,您需要检查前面的每个数组元素是否存在。我无法让您的检查函数工作。请参阅下面的测试代码。我在你的“支票”下面添加了一个变通方法,它确实对我有效。