【问题标题】: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
  • 我创建了解决方案

标签: javascript arrays reactjs loops object


【解决方案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 赋予该函数的名称不匹配。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-08
    • 2018-09-29
    • 2015-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多