如何检查对象中的数组是否全部为空?

这个问题在这里已经有了答案:

  • 如何遍历或枚举JavaScript对象? 29个答案

  • 因此,如果我们想通过对象,发现如果该对象的每个琴键经过检查,我们可以使用Object.keys和阵列#额外的every像这样:

    var allEmpty = Object.keys(obj).every(function(key){
    return obj[key].length === 0
    })
    

    这将根据每次运行给定检查obj[key].length === 0返回true来将allEmpty设置为布尔值(true / false)。

    该对象将allEmpty设置为true:

    var obj = {
        0: [],
        1: [],
        2: []
    }
    

    而这会将其设置为false:

    var obj = {
        0: [],
        1: [],
        2: [],
        3: [1]
    }
    

    一个object没有长度属性。 还有其他几种方法来循环对象的值,您应该可以找到它们。

    要检查一个值是否是一个数组,你可以使用Array.isArray

    例如:

    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: [] }));

    它不起作用,因为你的对象没有length属性。

    试试这个简单的

    function isUnPopulatedObject(obj) { 
        return Object.keys( obj ).filter( function(key){
          return obj[ key ].length > 0;  //if any array has a property then filter will return this key.
        }).length == 0; //used == here since you want to check if all are empty
    }
    

    或使用每一个

    function isUnPopulatedObject(obj) { 
        return Object.keys( obj ).every( function(key){
          return obj[ key ].length == 0;  
        }); 
    }
    

    或使用一些

    function isUnPopulatedObject(obj) { 
        return Object.keys( obj ).some( function(key){
          return obj[ key ].length > 0;  
        }) === false; 
    }
    
    链接地址: http://www.djcxy.com/p/28843.html

    上一篇: How to Check if Arrays in a Object Are All Empty?

    下一篇: How to loop through JSON object