如何检查对象内的数组是不是为空 JavaScript

Posted

技术标签:

【中文标题】如何检查对象内的数组是不是为空 JavaScript【英文标题】:How to check if array inside object is empty JavaScript如何检查对象内的数组是否为空 JavaScript 【发布时间】:2021-05-12 20:43:23 【问题描述】:
const isEmpty = Object.keys(data).every((key) => 
  return data[key].length === 0;
);

如何检查对象中的所有数组是否为空。 我试过的这段代码的问题是我得到了这个:

data 
    0: Array[]
    1: Array[]
    2: Array[]

data 
    0: Array[]
    1: Array[1]
    2: Array[]

对于第一个对象,我得到假,这没关系,但第二个我得到真,但我想得到假,直到所有 arrays.length > 0,所以我只需要在这种情况下得到真:

obj 
    0: Array[1]
    1: Array[1]
    2: Array[1]

【问题讨论】:

如果你知道你想要下面的arrays.length > 0。那你为什么不用length === 0呢? 您的data 完全无效。 Array[0] 应该是什么?如果这真的是你的代码,那将不会返回 false 或 true,而只会抛出错误...... Array[0]等是什么意思?如果您的意思是一个包含 0 个元素的数组,那么您的解决方案将为第一个提供 true,第二个提供 false,而不是第一个提供 false,第二个提供 true。此外,您想要的结果还不清楚,您说您希望它在所有arrays.length > 0 之前都为真,然后说“我需要在这种情况下为真 ",这表明只有当所有 arrays.length 都等于 1 时才需要 true 我创建了解决方案 【参考方案1】:

使用 Object.values 方法。

Object.values(data).some(it => !it.length)

【讨论】:

这行不通,但你已经够近了 @Rajesh 抱歉,我在 it.length 之前忘记了 ! 运算符【参考方案2】:

解决办法

function CheckArray(obj) 
  this.haveItems = false;

  this.onCheck = function (obj) 
    let createdArr = Object.values(obj);
    
    for (let i = 0; i < createdArr.length; i++) 
      if (createdArr[i].length > 0) 
        this.haveItems = true;
        break;
      
    
  ;


let data = 
  0: [],
  1: [],
  2: [],
;

let a = new CheckArray();
a.onCheck(data);

console.log(a);

【讨论】:

【参考方案3】:

您可以检查所有值的长度。

const isEmpty = data => !Object.values(data).every(( length ) => length);

console.log(isEmpty( 0: [], 1: [], 2: [] ));
console.log(isEmpty( 0: [], 1: [1], 2: [] ));
console.log(isEmpty( 0: [0], 1: [1], 2: [2] ));

【讨论】:

我认为 const isEmpty = data =&gt; Object.values(data).every(( length ) =&gt; !length); 否则函数应该命名为 someEmpty 或类似的名称。 命名由操作决定。我更喜欢hasEmptyArrays ... 啊,你是对的。我错过了一个事实,即所需的行为与 OP 赋予该函数的名称不匹配。

以上是关于如何检查对象内的数组是不是为空 JavaScript的主要内容,如果未能解决你的问题,请参考以下文章

Javascript:检查对象是不是没有属性或映射/关联数组是不是为空[重复]

如何使用 JavaScript 或 jQuery 更改数组内的对象的值?

如何检查 numpy 数组是不是为空?

如何检查数组是不是为空/空?

Perl如何检查数组是不是仍然为空?

如何在javascript中执行if语句来检查JSON数组是不是为空?