我有一个变量,如下所示。
let response = [
{}
];
这是一个空对象的数组。我应该采取什么样的检查来确定这种反应是否与此完全相同。即,
[{}] === response; // returns false
如果响应是[{}]
,我想要一个返回false的检查我该怎么做。
堆栈溢出已经存在问题,询问如何检查空对象。我的问题是如何检查具有空对象的数组。完全不同。这不是任何问题的重复。
首先检查它是否是一个数组,使用Array.isArray
,然后检查.length
以查看它是否为1,然后检查第一个元素是否为空对象(typeof
和Object.keys().length === 0
)。那样你就会非常确定这是你想要的。
另一种选择是使用json:JSON.stringify(response) ==== '[{}]'
。请注意响应中的循环依赖性。
你可以简单地做:
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
怎么样:
Object.keys(response[0] || {}).length === 0