确定变量是否为对象数组的最佳标准跨浏览器方法是什么?确定变量是否是Javascript中的对象数组
在网上搜索我找不到任何有用的东西,我发现的都是如何确定一个变量是一个数组,还是一个数组包含一个特定的对象。
编辑:
例如,如果我有这样的:
var arr = []; ==> false
var arr = [{},{}]; ==> true
var arr = [{},'']; ==> true
var arr = [new Date(),'']; ==> false
确定变量是否为对象数组的最佳标准跨浏览器方法是什么?确定变量是否是Javascript中的对象数组
在网上搜索我找不到任何有用的东西,我发现的都是如何确定一个变量是一个数组,还是一个数组包含一个特定的对象。
例如,如果我有这样的:
var arr = []; ==> false
var arr = [{},{}]; ==> true
var arr = [{},'']; ==> true
var arr = [new Date(),'']; ==> false
要检查一个变量是一个数组可以使用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"
您可以检查变量是否是数组,并且如果数组的第一个元素的原型为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));
请添加一些用例。 –
'console.log()' – ProEvilz
你可以尝试'Array.isArray(myArray)&& myArray.every(x => typeof x ==='object')' – Rajesh