web-dev-qa-db-ja.com

JavaScript配列オブジェクトを数える方法は?

次のようなJavaScript配列がある場合:

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

この配列内のオブジェクトを数える方法は?!
内部にオブジェクトが3つしかないため、カウント結果3を取得する方法を意味します:母、父、兄弟?!

配列でない場合、JSON配列に変換する方法は?

12
Nik Sumeiko

これは配列ではなく、オブジェクトリテラルです。オブジェクトの独自のプロパティを反復処理してカウントする必要があります。例:

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
24
CMS

ページでjqueryを使用している場合、これは機能します。

$(member).toArray().length;
19
TomZ

あなたはこのコードを試すことができます、それはブラウザで完全に動作します:

Object.keys(object).length;
10
Danieldms

これは配列ではなく、オブジェクトリテラルです。

オブジェクトのプロパティを反復処理して、所有するオブジェクトの数を数えることができます。

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

指定されたオブジェクト自体の列挙可能なプロパティの配列を返すObject.keys()メソッドを使用できます。

Object.keys(member).length;
4
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
3
LittleFi.F

これが私がやる方法です

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

私の練習では、私はこのように働きます:

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