如何检查只包含空对象[{}]的数组

时间:2017-12-20 14:56:04

标签: javascript

我有一个变量,如下所示。

let response = [
 {}
];

这是一个空对象的数组。我应该采取什么样的检查来确定这种反应是否与此完全相同。即,

[{}] === response; // returns false

如果响应为[{}],我希望检查返回false。

已经有关于堆栈溢出的问题,它询问如何检查空对象。我的问题是如何检查具有空对象的数组。完全不同。这不是任何问题的重复。

3 个答案:

答案 0 :(得分:1)

首先检查它是否是带Array.isArray的数组,然后检查.length以查看它是否为1,然后检查第一个元素是否为空对象({{1 }和typeof)。这样你就可以确定它是你想要的。

另一种选择是使用json:Object.keys().length === 0。请注意响应中的循环依赖。

答案 1 :(得分:1)

您可以这样做:

let response = [{}];

console.log(JSON.stringify([{}]) === JSON.stringify([{}])); // true,

但如果您的回复是循环的,那么这将失败。

您可以采取的另一种方式是:

let response = [{}];


console.log(
  Array.isArray(response) &&
    response.length === 1 &&
    Object.prototype.toString.call(response[0]) === '[object Object]' &&
    Object.getOwnPropertyNames(response[0]).length === 0
); // true

答案 2 :(得分:0)

怎么样:

Object.keys(response[0] || {}).length === 0