首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何检查对象中的数组是否都是空的?

如何检查对象中的数组是否都是空的?
EN

Stack Overflow用户
提问于 2016-10-07 14:23:11
回答 5查看 5.2K关注 0票数 9

因此,我需要传入一个对象,其中的每个属性都是数组。函数将使用每个数组中保存的信息,但我希望通过检查每个数组是否也为空/空来检查整个对象是否为空(不只是没有属性)。到目前为止我所拥有的是:

代码语言:javascript
复制
function isUnPopulatedObject(obj) { // checks if any of the object's values are falsy
    if (!obj) {
        return true;
    }

    for (var i = 0; i < obj.length; i++) {
        console.log(obj[i]);
        if (obj[i].length != 0) {
            return false;
        }    
    }

    return true;  
}

例如,这将导致上面的结果是false

代码语言:javascript
复制
obj {
    0: Array[0]
    1: Array[1]
    2: Array[0]
}

虽然这是我正在检查的空值(事实也是如此):

代码语言:javascript
复制
obj {
    0: Array[0]
    1: Array[0]
    2: Array[0]
}

以上代码不起作用。提前谢谢。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2016-10-07 14:28:37

因此,如果我们想遍历该对象并查找该对象的每个键是否通过检查,我们可以使用Object.keys和Array#extra every,如下所示:

代码语言:javascript
复制
var allEmpty = Object.keys(obj).every(function(key){
return obj[key].length === 0
})

这将将allEmpty设置为布尔值( true /false),这取决于我们每次运行给定的check obj[key].length === 0是否返回true。

此对象将allEmpty设置为true:

代码语言:javascript
复制
var obj = {
    0: [],
    1: [],
    2: []
}

这将其设置为false:

代码语言:javascript
复制
var obj = {
    0: [],
    1: [],
    2: [],
    3: [1]
}
票数 11
EN

Stack Overflow用户

发布于 2016-10-07 14:28:52

object没有length属性。还有其他几种方法可以循环遍历对象的值,您应该能够对这些值进行发现

若要检查值是否为数组,可以使用Array.isArray

例如:

代码语言:javascript
复制
function objectIsEmpty(obj) {
    return Object.keys(obj).every(function(key) {
      var val = obj[key];  
      
      if (Array.isArray(val) && val.length === 0) {
        return true;
      }
      
      // Other rules go here:
      // ...
      
      return false;
    });
};


console.log(objectIsEmpty({ 0: [], 1: [], 2: [] }));
console.log(objectIsEmpty({ 0: [], 1: [1], 2: [] }));

票数 2
EN

Stack Overflow用户

发布于 2016-10-07 15:47:25

在城里开始用新来的孩子可能会很有趣。Object.values()

代码语言:javascript
复制
var o1 = {0: [], 1: [1], 2: []},
    o2 = {0: [], 1: [], 2: []},
chkObj = o => Object.values(o).every(a => a.length === 0);
console.log(chkObj(o1));
console.log(chkObj(o2));

注意:这应该只适用于最新版本的Chrome,Opera和FF

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39919560

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档