在Javascript中测试多维数组中数值是否存在的正确方法是什么?

时间:2015-05-13 10:28:37

标签: javascript arrays

我想检查arr [i] [j]的存在。所以我做了以下测试:

typeof arr[i][j] !== 'undefined'

问题是如果没有定义arr [i],我会收到错误。所以我这样做了:

typeof arr[i] !== 'undefined' && typeof arr[i][j] !== 'undefined'

有更好的方法吗?

5 个答案:

答案 0 :(得分:0)

这将解决您的部分问题:How to check for "undefined" in JavaScript?

但是,当然,如果你想检查arr [i] [j]的存在,首先你必须检查是否存在arr [i],否则你会收到错误。例如:

if(arr[i] != undefined && arr[i][j] != undefined){
   //your code
}

答案 1 :(得分:0)

if(arr[i] != null && arr[i][j] != null)

答案 2 :(得分:0)

if(arr && arr[i] && arr[i][j])是执行此操作的惯用方法 - 明确检查nullundefined或其他虚假值不会在此处添加任何值。

答案 3 :(得分:0)

编写实用程序功能

function arrayItemCheck(array, i, j){
  return array != null && typeof array[i] != 'undefined' && typeof array[i][j] != 'undefined';
}

var arr = [
    [1],
    [1,2]
];

console.log(arrayItemCheck(arr, 2, 0));

答案 4 :(得分:0)

使用本机JavaScript无法实现此目的。但是有很多不同的方法可以轻松实现这一目标。这是一个:

var isset = function isset (arr) {
  var indexes = Array.prototype.slice.call(arguments, 1);
  var current = arr;

  for (var i = 0; i < indexes.length; i += 1) {
    arr = arr[indexes[i]];

    if (typeof arr === 'undefined') {
      return false;
    }
  }

  return true;
}

然后你可以像这样使用它:

var arr = [1, [11, 22, [[1111, 2222, 4444], 222, 333]], 3];

console.log(isset(arr, 0, 1)); // -> false
console.log(isset(arr, 0, 4, 4, 6, 7, 8)); // -> false
console.log(isset(arr, 1, 2, 0)); // -> true

if (isset(arr, 1, 2, 4)) {
  // ...
}