如何在JavaScript中检查数组是否存在(如果没有创建)?

时间:2009-12-25 17:16:26

标签: javascript arrays

如何检查特定阵列是否存在,如果不存在则会创建?

7 个答案:

答案 0 :(得分:72)

如果要检查数组x是否存在并创建它,如果不存在,则可以执行

x = ( typeof x != 'undefined' && x instanceof Array ) ? x : []

答案 1 :(得分:57)

var arr = arr || [];

答案 2 :(得分:22)

const list = Array.isArray(x) ? x : [x];

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/isArray

或者如果x 可以是一个数组,并且您想确保它是一个数组:

const list = [].concat(x);

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/concat

答案 3 :(得分:12)

您可以使用typeof operator测试 undefined instanceof operator来测试它是 Array 的实例:

if (typeof arr == "undefined" || !(arr instanceof Array)) {
    var arr = [];
}

答案 4 :(得分:8)

如果要检查对象是否已经是数组,要避免在多框架DOM环境中工作时instanceof运算符的well known issues,可以使用Object.prototype.toString方法:

arr = Object.prototype.toString.call(arr) == "[object Array]" ? arr : [];

答案 5 :(得分:0)

<script type="text/javascript">

array1  = new Array('apple','mango','banana');
var storearray1 =array1;

if (window[storearray1] && window[storearray1] instanceof Array) {
    alert("exist!");
} else {
    alert('not find: storearray1 = ' + typeof storearray1)
    }

</script>   

答案 6 :(得分:-5)

如果您正在谈论浏览器环境,那么所有全局变量都是窗口对象的成员。所以要检查:

if (window.somearray !== undefined) {
    somearray = [];
}