代码之家  ›  专栏  ›  技术社区  ›  Nik Sumeiko

如何计算javascript数组对象?

  •  10
  • Nik Sumeiko  · 技术社区  · 15 年前

    当我有这样的javascript数组时:

    var member = {
        "mother": {
            "name" : "Mary",
            "age" : "48"
        },
        "father": {
            "name" : "Bill",
            "age" : "50"
        },
        "brother": {
            "name" : "Alex",
            "age" : "28"
        }
    }
    

    如何计算此数组中的对象?!
    我的意思是如何得到一个计数结果3,因为里面只有3个物体:母亲,父亲,兄弟?!

    如果不是数组,那么如何将其转换为JSON数组?

    8 回复  |  直到 8 年前
        1
  •  23
  •   Christian C. Salvadó    15 年前

    这不是一个数组,是一个对象文本,您应该迭代对象的属性并对它们进行计数,例如:

    function objectLength(obj) {
      var result = 0;
      for(var prop in obj) {
        if (obj.hasOwnProperty(prop)) {
        // or Object.prototype.hasOwnProperty.call(obj, prop)
          result++;
        }
      }
      return result;
    }
    
    objectLength(member); // for your example, 3
    

    这个 hasOwnProperty 方法应避免对继承的属性进行迭代,例如

    var obj = {};
    typeof obj.toString; // "function"
    obj.hasOwnProperty('toString'); // false, since it's inherited
    
        2
  •  17
  •   TomZ    14 年前

    如果在您的页面上使用jquery,这将起作用:

    $(member).toArray().length;
    
        3
  •  7
  •   Useless Code    8 年前

    您可以尝试此代码,它在浏览器中工作得很好:

    Object.keys(object).length;
    
        4
  •  6
  •   gnarf    15 年前

    这不是数组,而是对象文本。

    您可以迭代对象属性并计算它拥有的数量:

    var count = 0;
    for (var k in obj) {
      // if the object has this property and it isn't a property
      // further up the prototype chain
      if (obj.hasOwnProperty(k)) count++;
    }
    
        5
  •  4
  •   micheledallachiara    8 年前

    可以使用object.keys()方法返回给定对象自己的可枚举属性的数组:

    Object.keys(member).length;
    
        6
  •  3
  •   LittleFi.F    8 年前
    var member = {
            "mother": {
                "name" : "Mary",
                "age" : "48"
            },
            "father": {
                "name" : "Bill",
                "age" : "50"
            },
            "brother": {
                "name" : "Alex",
                "age" : "28"
            }
        }
        console.log('member key size:' + Object.keys(member).length);
    
    ref a good guy : https://stackoverflow.com/questions/5223/length-of-a-javascript-object
    
        7
  •  2
  •   Peter Bailey    15 年前

    我就是这么做的

    function getObjectLength( obj )
    {
      var length = 0;
      for ( var p in obj )
      {
        if ( obj.hasOwnProperty( p ) )
        {
          length++;
        }
      }
      return length;
    }
    
        8
  •  0
  •   Ivijan Stefan Stipić    10 年前

    在我的实践中,我是这样工作的:

    /*
    *   $.count(array) -  Returns the number of elements in an array (immproved equivalent to .length property). 
    */
    $.count = function (array){
        if(array.length)
            return array.length;
        else
        {
            var length = 0;
            for ( var p in array ){if(array.hasOwnProperty(p)) length++;};
            return length;
        }
    }