Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/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 如何使用lodash isEmpty检查对象是否为空?_Javascript_Arrays_Angular_Lodash - Fatal编程技术网

Javascript 如何使用lodash isEmpty检查对象是否为空?

Javascript 如何使用lodash isEmpty检查对象是否为空?,javascript,arrays,angular,lodash,Javascript,Arrays,Angular,Lodash,我有一个map函数,如果我检查array\u isEmpty这个条件应该满足,但是它没有进入if语句,那么现在就返回数组的空对象。你知道什么是错误的或更好的方法吗 main.js const validateResponse = _.map(drugs ,validateValues); 现在validateResponse返回[{}],它应该满足条件 if (_.isEmpty(validateResponse)) { throw invalidPriceError;

我有一个map函数,如果我检查array
\u isEmpty
这个条件应该满足,但是它没有进入if语句,那么现在就返回数组的空对象。你知道什么是错误的或更好的方法吗

main.js

const validateResponse = _.map(drugs ,validateValues);
现在validateResponse返回[{}],它应该满足条件

  if (_.isEmpty(validateResponse)) {
      throw invalidPriceError;
    }

您必须压缩内部构件或检查更深一层:

if (!validateResponse.filter(r => !_.isEmpty(r)).length){
  throw invalidPriceError;
}

根据lodash文件:

类似数组的值(如参数对象、数组、缓冲区、字符串或类似jQuery的集合)如果长度为0,则视为空。类似地,如果贴图和集的大小为0,则将其视为空


[{}]。长度正好是1。一盒卷心菜,如果你愿意的话。包含一个空对象的数组。因此,isEmpty的计算结果为false<代码>[]另一方面,长度等于0。

可能还有一些其他情况需要处理,如空数组或两个空对象的数组等。以下内容的变体应满足您的需要

let数组=[{}];
//包含任何空对象
log(0.some(数组,0.isEmpty))
//仅包含空对象
log(0.every(数组,0.isEmpty))
//只包含一个空对象
console.log(0.every(array,0.isEmpty)和&array.length==1)

如果您只想检查是否有一个数组包含一个空对象
[{}]
,您可以使用:

const haspempty=arr=>..isEqual(arr,[{}])
console.log(hasEmpty([])//false
log(hasEmpty([{}])//true
log(hasEmpty([{},{}])//false
log(hasEmpty([{a:1}])//false

由于数组实际上并不是空的,但您真正要检查的是“数组是否只有一个值,并且单个值是否为空对象?”,因此您可以执行以下检查:

if (validateResponse.length === 1 && _.isEmpty(validateResponse[0])) {
      throw invalidPriceError;
    }

因此,如何检测
[{}]
的问题也是如此?@danh这是正确的
有些(validateResponse,isEmpty)
似乎很接近,但不确定您希望如何处理长度数组!=1直到未计算为真我将逻辑倒置,用
修复。好的,有意义,那么在这个用例中我如何检查这样的数组呢?我的答案基于这个问题的标题。听起来你不需要像现在这样的解决方案。我建议更新问题的标题。或者,如果可能的话,可以用
\u isEmpty
视为空的内容填充
验证响应
。也许这有助于检测空对象,这里有一个问题: