Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何检查仅包含空对象[{}]的数组_Javascript - Fatal编程技术网

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

Javascript 如何检查仅包含空对象[{}]的数组,javascript,Javascript,我有一个变量,如下所示 let response = [ {} ]; 这是一个包含空对象的数组。我应该进行什么样的检查来确定此响应是否与此完全相同。i、 e [{}] === response; // returns false 如果响应是[{}]如何执行,我希望有一个返回false的检查 堆栈溢出问题已经存在,它询问如何检查空对象。我的问题是如何检查具有空对象的数组。完全不同。这不是任何问题的重复 首先用array.isArray检查它是否是一个数组,然后检查.length以查看它是否是

我有一个变量,如下所示

let response = [
 {}
];
这是一个包含空对象的数组。我应该进行什么样的检查来确定此响应是否与此完全相同。i、 e

[{}] === response; // returns false
如果响应是
[{}]
如何执行,我希望有一个返回false的检查


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

首先用
array.isArray
检查它是否是一个数组,然后检查
.length
以查看它是否是一个数组,然后检查第一个元素是否为空对象(
typeof
object.keys()。length==0
)。这样你就会很确定这是你想要的

另一个选项是使用json:
json.stringify(响应)=='[{}]'
。请注意响应中的循环依赖关系。

您可以简单地执行以下操作:

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

FWIW,如果一个数组包含一个对象,那么它就不是空的。我会这样做:
array.isArray(response)&&response.length==1&&typeof response[1]==object'&&object.keys(response[1])。length==0
@FelixKling这不是那个问题的重复。在这个问题中,询问数组中的空对象。那个问题只要求一个空对象。:)@阿德莱姆兰:我希望你知道如何检查数组的长度以及如何访问第一个元素:)“完全不同。”不完全一样。检查对象的空性是问题的一部分。
arr.length==1&&ismptyobject(arr[0])
其中
ismptyobject
是另一个问题中建议的实现。它可能是一个包含多个元素的数组,但可能适用于大多数用例;)在
[[]]
作为
对象的情况下不起作用。键([])。长度为0@AyushGupta但这不是OP要求的。也许,但如果OP需要准确地检查该响应,并且
[[]]
是有效的响应,那么您的响应对于循环问题不会100%可靠,我相信stringify有一个选项,它只会深入n层,解决问题(如果结构是循环的,那么无论如何它肯定会是不同的2层深度)。我需要查一下,谢谢你,先生。这很有帮助。仅供参考,
typeof[]
object
,而
object.keys([])。length
是0,所以您可能需要对object执行不同的检查