如何检查数组是否包含至少一个对象?

时间:2017-10-10 09:37:36

标签: javascript arrays node.js

我想检查数组是否包含对象。如果对象存在与否,我不想比较值只是想检查我的数组?

实施例

$arr = ['a','b','c'] // normal
$arr = [{ id: 1}, {id: 2}] // array of objects
$arr = [{id: 1}, {id:2}, 'a', 'b'] // mix values

那么如何检查数组是否包含对象

5 个答案:

答案 0 :(得分:6)

您可以使用some方法测试array中的至少一个元素是否通过提供的函数实现的test



let arr = [{id: 1}, {id:2}, 'a', 'b'];
let exists = arr.some(a => typeof a == 'object');
console.log(exists);




答案 1 :(得分:4)

  

我想检查数组是否包含对象

使用some简单检查数组中的任何项是否具有“object”类型的值

var hasObject = $arr.some( function(val){
   return typeof val == "object";
});

答案 2 :(得分:1)

var hasObject = function(arr) {
  for (var i=0; i<arr.length; i++) {
    if (typeof arr[i] == 'object') {
      return true;
    }
  }
  return false;
};

console.log(hasObject(['a','b','c']));
console.log(hasObject([{ id: 1}, {id: 2}]));
console.log(hasObject([{id: 1}, {id:2}, 'a', 'b']));

答案 3 :(得分:0)

您可以对对象进行计数,并将其用于返回的三种类型之一。

function getType(array) {
    var count = array.reduce(function (r, a) {
        return r + (typeof a === 'object');
    }, 0);
    
    return count === array.length
        ? 'array of objects'
        : count
            ? 'mix values'
            : 'normal';
}

console.log([
    ['a', 'b', 'c'],
    [{ id: 1 }, { id: 2 }],
    [{ id: 1 }, { id: 2 }, 'a', 'b']
].map(getType));

答案 4 :(得分:0)

对数组进行类型检查

const hasObject = a => Array.isArray(a) && a.some(val => typeof val === 'object')
相关问题