Любые недостатки создания объекта со значением «:» - PullRequest
2 голосов
/ 08 декабря 2010

В настоящее время я отслеживаю вещи в массиве, но мне не нужно ничего знать о них, кроме как они в массиве.Например, у меня может быть массив forSale, и у меня есть все itemID, которые продаются в массиве.

Пока работает отлично, но в любом случае я проводил некоторые тесты, и кажется, что object.hasOwnProperty(x) дует array.indexOf(x) !== -1 из воды (я знаю, что они совершенно разные, но я незнать любой другой способ проверить, имеет ли массив значение).Это заставило меня задуматься, почему бы просто не создать что-то вроде

var saleObject = {
    "someId" : "",
    "someOtherId" : ""
};

, тогда я могу позвонить saleObject.hasOwnProperty('someId') и узнать, что этот объект продается.Я не вижу в этом минусов, но именно поэтому я здесь.Что-то не так в этом?

Ответы [ 2 ]

2 голосов
/ 08 декабря 2010

Никаких проблем с ним, при условии, что вы можете изменить зависимый код, чтобы принять новую структуру. Разница в скорости связана с тем, что объект может выполнять бинарный поиск, чтобы определить, есть ли у него ключ, а indexOf должен проверять каждое значение в массиве.

2 голосов
/ 08 декабря 2010

Нет. Это допустимое использование объекта, поскольку объекты JavaScript являются только расширенными ассоциативными массивами.

Также обратите внимание, что Array.indexOf на данный момент не является стандартным методом JavaScript, и вы не можете на него полагаться. Он был введен только в ECMA-262 издание 5.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...