我有两个数组:
var firstarray = [123, 13, 34, 12, 63, 63];
var secondarray = [[10,20,10], [122, 123, 53], [542, 234, 12, 331]];
我需要一个像这样的功能:
function checkArray(array){
//if array contains multiple arrays, return true
//if the array contains only values, return false
}
secondarray
内的数组总是有变化的。
答案 0 :(得分:4)
提示:循环第一个数组并确定您正在读取的对象之一是否为数组。
这是一个可以帮助您的功能:
function is_array(input){
return typeof(input)=='object'&&(input instanceof Array);
}
答案 1 :(得分:1)
在现代Javascript中:
myAry.every(Array.isArray) // returns true if all elements of myAry are arrays
引用(以及旧浏览器的替换):
https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/every
https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/isArray
答案 2 :(得分:1)
主要问题是JavaScript typeof anArrayVariable
和object
一样返回typeof aRealObject
- 所以没有简单的方法来区分它们。
jQuery在某种程度上使用方法$.isArray()
修复了这个问题,该方法对于数组正确返回true,对于对象,数字,字符串或布尔值正确返回。
因此,使用jQuery就变得如此简单:
function checkArray(array){
//if array contains multiple arrays, return true
//if the array contains only values, return false
for(var i=0;i<array.length;i++){
if($.isArray(array[i]))
return true;
}
return false;
}
我建议您可以在jQuery中查看该方法的源代码,并在vanilla javascript中实现相同的想法。
答案 3 :(得分:0)
检查数组中第一个元素的类型:
function checkArray(list) {
return typeof(list[0]) == "object";
}