Как рассчитать, 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 22 April 2010 в 17:37
поделиться

3 ответа

Это не массив, это литерал объекта, вы должны перебирать собственные свойства объекта и подсчитывать их, например:

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
ответ дан 2 December 2019 в 02:53
поделиться

Это не массив, это литерал объекта.

Вы можете перебирать свойства объекта и подсчитывать, сколько ему принадлежит:

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
ответ дан 2 December 2019 в 02:53
поделиться

Вот как бы я это сделал

function getObjectLength( obj )
{
  var length = 0;
  for ( var p in obj )
  {
    if ( obj.hasOwnProperty( p ) )
    {
      length++;
    }
  }
  return length;
}
2
ответ дан 2 December 2019 в 02:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: