确定变量是否为对象数组的最佳标准跨浏览器方法是什么。
在网上搜索我找不到任何有用的东西,我发现的是如何确定变量是否是数组,或者数组是否包含特定对象。
例如,如果我有这个:
var arr = []; ==> false
var arr = [{},{}]; ==> true
var arr = [{},'']; ==> true
var arr = [new Date(),'']; ==> false
答案 0 :(得分: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));
答案 1 :(得分:0)
要检查变量是否为数组,您可以使用 mt.exe 方法,如下所示:
var anArray = [];
var notAnArray = {};
console.log(Array.isArray(anArray)); // logs "true"
console.log(Array.isArray(notAnArray)); // logs "false"
要检查数组是否包含特定对象,您可以使用 Array.isArray() :
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.some()
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"