У меня есть ситуация, когда я пытаюсь сделать работу с array
, но я просто не думаю, что это будет. Я хочу иметь список объектов, каждый из которых имеет уникальный идентификатор, и я хочу иметь возможность легко ссылаться на конкретный объект, не зацикливая массив, ищущий этот идентификатор.Являются ли «for ... in» циклы в Javascript всегда плохими?
Если я использую object
, я могу легко использовать уникальный идентификатор в качестве ключа и объекта в качестве значения. Однако, если я использую объект вместо массива, мне придется использовать цикл for...in
, и я знаю, что есть проблема, связанная с этим, если кто-то, использующий мой код, расширил Object.prototype
.
Так вот мой вопрос:
Является ли это на самом деле, что часто люди простираться Object.prototype
, что я должен быть устал от его использования? Существуют ли другие причины, по которым я не хочу использовать цикл for...in
?
С другой стороны, является ли производительность хитом цикла в массиве, который ищет уникальный идентификатор, настолько минимальный, что я не должен беспокоиться о нем?
(Для записи у массива, вероятно, будет довольно мало элементов, но я получаю доступ к нему очень часто. Кроме того, код, который я пишу, будет плагином jQuery, поэтому я не могу контролировать его что другие плохие кода люди совмещая ее с)
UPDATE:.
на основе рекомендаций от @nnnnnn, я создал тест JSPerf и вот результаты: http://jsperf.com/accessing-object-properties-vs-iterating-over-arrays
в основном, хотя объект путь немного быстрее, differen ce незначительно. Тем не менее, использование for...in
с hasOwnProperty
кажется чище.
Нет, они только как правило, «плохо», когда один использует конструкцию злоумышленником * массив *, с ожиданием для-каждого, который находится в другом языки. (Ответы охватывают остальные.) –