@Urukhayy

Как лучше построить и решить данную задачу?

Нужно оптимально осуществить принцип запроса значений. Приведу пример:
Есть прилавок, в котором продаётся множество видов фруктов. У каждого фрукта (к примеру яблоко, груша) есть свой сорт. У каждого сорта своя цена. Когда покупатель выбирает один сорт яблок, мы должны извлекать цену из массива, чтобы показать ему. Но тут есть загвоздка. К каждому сорту мы также применяем свой ID. У одного сорта пусть будет ID=1023, а у другого сорта ID на тысячу меньше, пусть будет 24. Таким образом может быть и такое, что у одного сорта груши ID = 3, а у сорта яблок какого-либо ID=4, то есть ID не задаёт порядок сортов и типов фруктов.

Так вот, как будет лучше сортировать эти цены? Внимание, желательно решить задачу без использования ООП.
Вариант 1:
// Создаём для каждого типа свой массив
var Apples = [150,300,450]; // цены на каждый сорт
var Oranges= [220,300,450]; // цены на каждый сорт
// и т.д. все типы фруктов

В данном мы можем ввести служебную переменную, которая будет запоминать выбранный индекс в одном из массивов. Но чтобы задать такое значение, нужно построить условие, через которое мы узнаем, на какой сорт кликнул пользователь (к примеру зная ID сорта). Тогда для каждого сорта и фрукта придется строить конструкцию проверок на список определённых ID.

Вариант 2:
// создаём общий двумерный массив
var Array = [
[1000,250], // первое значение есть ID сорта (это может быть и яблоко, и груша и что угодно), второе - цена сорта
[1032,300], // ..
[2034,270] // ..
// ...
];

В данном способе предполагается цикл всего массива на поиск соответствия выбранного пользователем ID сорта с первым значением каждого подмасива.
  • Вопрос задан
  • 207 просмотров
Пригласить эксперта
Ответы на вопрос 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Разрежённый массив. Можно хранить, например, в дереве - тогда поиск будет быстрым, а добавление медленным, или в списке, тогда добавление ускорится, а поиск замедлится.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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