2017-10-04 40 views
-1

确定变量是否为对象数组的最佳标准跨浏览器方法是什么?确定变量是否是Javascript中的对象数组

在网上搜索我找不到任何有用的东西,我发现的都是如何确定一个变量是一个数组,还是一个数组包含一个特定的对象。

编辑:

例如,如果我有这样的:

var arr = []; ==> false 
var arr = [{},{}]; ==> true 
var arr = [{},'']; ==> true 
var arr = [new Date(),'']; ==> false 
+6

请添加一些用例。 –

+1

'console.log()' – ProEvilz

+2

你可以尝试'Array.isArray(myArray)&& myArray.every(x => typeof x ==='object')' – Rajesh

回答

0

要检查一个变量是一个数组可以使用Array.isArray()方法是这样的:

var anArray = []; 
 
var notAnArray = {}; 
 

 
console.log(Array.isArray(anArray)); // logs "true" 
 
console.log(Array.isArray(notAnArray)); // logs "false"

要检查是否一个数组包含一个特定的对象可以使用Array.some()

var myObjectArray = [{ a: 1 }]; 
 
var notMyObjectArray = [{ b: 1 }]; 
 

 
var checkIfSpecificObj = function(obj) { 
 
    return obj.hasOwnProperty('a'); 
 
} 
 

 
console.log(myObjectArray.some(checkIfSpecificObj)); // logs "true" 
 
console.log(notMyObjectArray.some(checkIfSpecificObj)); // logs "false"

的检查,如果阵列中只包含对象可以使用Array.every()

var myObjectArray = [{}, {}, {}]; 
 
var notMyObjectArray = [{}, 'object', {}]; 
 

 
var checkIfOnlyObj = function(obj) { 
 
    return typeof obj === 'object'; 
 
} 
 

 
console.log(myObjectArray.every(checkIfOnlyObj)); // logs "true" 
 
console.log(notMyObjectArray.every(checkIfOnlyObj)); // logs "false"

1

您可以检查变量是否是数组,并且如果数组的第一个元素的原型为Object

function check(o) { 
 
    return Array.isArray(o) && o[0] && Object.getPrototypeOf(o[0]) === Object.prototype || false; 
 
} 
 

 
var array = [[], [new Date(),''], [{},{}], [{},'']]; 
 

 
console.log(array.map(check));

相关问题