Обзор:
У меня есть массив из 20-байтовых строк, которые необходимо сохранить на веб-странице для использования при проверке ввода пользователя. Я предполагаю, что в этом массиве будет от 25 до 1000 элементов.
Соображения:
1. Веб-клиент представляет собой мобильное устройство с уменьшенной памятью и процессором.
2. Я ограничен только проверкой на стороне клиента (сейчас для нас это техническое ограничение) .
3. Безопасность не является проблемой - я понимаю, что пользователь может просматривать исходный код.
4. Я не хочу показывать массив пользователю. Я только хочу, чтобы пользователь ввел значение, а затем я перебираю массив, чтобы увидеть, есть ли совпадение. Если совпадений нет, я отправлю пользователю окно сообщения javascript.
Вопрос:
Как лучше всего хранить и перебирать эти данные?



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Вместо повторения используйте ассоциативный массив и проверьте наличие этого элемента:
var myChunks=[]
myChunks['aabbccdd...'] = true
Затем вы можете проверить наличие введенного значения простым тестом. Никаких петель не требуется:
if (myChunks[myValue]) {
//found the value
}
else {
// did not find value
}
Кроме того, в современных браузерах может показаться более понятным использование метода array.indexOf (из js 1.6). Может быть: chunks = ["foo", "bar", "baz"]; if (chunks.indexOf (something) == -1) {alert ("не найдено!")}. См. developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Objec ts /…
myChunks = {} - это объект, myChunks = [] - это то же самое, что и "new Array ()"
Диодей: Но зачем объявлять массив, если вы не используете его как таковой? Если вы объявите его как объект, ясно, что он используется как ассоциативный массив. Если вы объявите его как массив, люди будут ожидать, что это что-то проиндексировано целыми числами, а в данном случае это не так.
Предполагалось, что в приведенном выше примере указано var myChunks = {}, а не []? Кажется странным объявлять что-то как массив, но рассматривать это как dict, хотя это будет работать.