确定变量是否是Javascript中的对象数组

时间:2017-10-04 09:50:06

标签: javascript

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

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

编辑:

例如,如果我有这个:

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

2 个答案:

答案 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"