Проверка длины объекта словаря

Я пытаюсь проверить длину здесь. Испытанное количество. Есть ли что-то, что я пропускаю?

var dNames = {}; 
dNames = GetAllNames();

for (var i = 0, l = dName.length; i < l; i++) 
{
        alert("Name: " + dName[i].name);
}

dNames содержит пары имя/значение. Я знаю, что dNames имеет значения в том объекте, но он все еще полностью перескакивает через это и когда я предупреждаю даже dName.length, очевидно, что это не то, как сделать это..., таким образом, не уверенное. Искавший это в сети. Ничего не мог найти на этом.

177
задан PositiveGuy 26 July 2010 в 17:35
поделиться

2 ответа

Этот вопрос сбивает с толку. Обычный объект {} не имеет свойства length , если только вы не собираетесь создать собственный конструктор функции, который генерирует пользовательские объекты, у которых оно есть (в этом случае вы не использовали не уточняю).

Это означает, что вы должны получить «длину» с помощью оператора for..in для объекта, поскольку length не установлена, и увеличить счетчик.

Я не понимаю, зачем вам нужна длина . Вы вручную устанавливаете 0 для объекта или полагаетесь на настраиваемые строковые ключи? например, obj ['foo'] = 'bar'; . Если последнее, опять же, зачем нужна длина?

Редактировать # 1 : Почему вы просто не можете сделать это?

list = [ {name:'john'}, {name:'bob'} ];

Затем перебрать список? Длина уже установлена.

1
ответ дан 23 November 2019 в 20:17
поделиться
var c = {'a':'A', 'b':'B', 'c':'C'};
var count = 0;
for (var i in c) {
   if (c.hasOwnProperty(i)) count++;
}

alert(count);
8
ответ дан 23 November 2019 в 20:17
поделиться
Другие вопросы по тегам:

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