簡體   English   中英

如何計算 JavaScript 數組對象?

[英]How to count JavaScript array objects?

當我有一個這樣的 JavaScript 對象時:

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

這個物體中的物體如何計數?!
我的意思是如何得到一個計數結果 3,因為里面只有 3 個對象:媽媽、爸爸、哥哥?!

如果它不是數組,那么如何將其轉換為 JSON 數組?

那不是數組,是對象文字,您應該遍歷對象自己的屬性並對其進行計數,例如:

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

你可以試試這個代碼,它在瀏覽器中完美運行:

Object.keys(member).length;

如果您在頁面上使用 jquery,這將起作用:

$(member).toArray().length;

您可以使用 Object.keys() 方法返回給定對象自己的可枚舉屬性的數組:

Object.keys(member).length;

那不是一個數組,它是一個對象字面量。

您可以迭代對象屬性並計算它擁有的數量:

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++;
}
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

這是我的方法

function getObjectLength( obj )
{
  var length = 0;
  for ( var p in obj )
  {
    if ( obj.hasOwnProperty( p ) )
    {
      length++;
    }
  }
  return length;
}

在我的實踐中,我是這樣工作的:

/*
*   $.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;
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM