我想检查arr [i] [j]的存在。所以我做了以下测试:
typeof arr[i][j] !== 'undefined'
问题是如果没有定义arr [i],我会收到错误。所以我这样做了:
typeof arr[i] !== 'undefined' && typeof arr[i][j] !== 'undefined'
有更好的方法吗?
答案 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])
是执行此操作的惯用方法 - 明确检查null
,undefined
或其他虚假值不会在此处添加任何值。
答案 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)) {
// ...
}