Показать сообщение отдельно
  #28 (permalink)  
Старый 25.10.2012, 16:46
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

Сообщение от Маэстро
Вообще мне нравятся решения "в одну строку". Я, пожалуй, всё же возьму Ваш вариант. Только у меня пока еще есть смутные сомнения насчет него - надо всячески потестировать при разных вариантах заполнения объекта и удаления его свойств, проверить быстродействие.
вот дока, на всякий.
http://es5.javascript.ru/x15.4.html#x15.4.4.12

вообще, самым быстрым вариантом будет вариант Slavenin, при приведении примитивов в объекты, конечно.

Сообщение от Маэстро
А вот посмотрите/прокомментируйте, пожалуйста, примерчик, который я нашел в инете. В частности касательно установки length:
он так же не позволяет изменять ключи.

Сообщение от Маэстро
А всё-таки, в Вашем алгоритме свойство length что должно хранить?
длину значений - см. массив.

Сообщение от Маэстро
при подсчете количества учтет не только свойства с числовыми индексами, но еще прибавит к счетчику и само свойство length.
конечно. код слишком упрощён, чтобы его использовать в голом виде

было бы неплохо не учитывать унаследованные свойства и проверять ключ на принадлежность к числу.
var length = 0, i;
for (i in obj) if (obj.hasOwnProperty(i) && isFinite(i)) {
    length += 1;
}
obj.length = length;
Ответить с цитированием