次のような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
ページでjqueryを使用している場合、これは機能します。
$(member).toArray().length;
あなたはこのコードを試すことができます、それはブラウザで完全に動作します:
Object.keys(object).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++;
}
指定されたオブジェクト自体の列挙可能なプロパティの配列を返すObject.keys()メソッドを使用できます。
Object.keys(member).length;
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;
}
}