получение уникальных значений в выпадающем списке

#javascript #node.js #pug

#javascript #node.js #pug

Вопрос:

Я поддерживаю блок кода, но с очень небольшим знанием pug файлов. Что было бы лучше всего получить только уникальные значения в выпадающем списке?

some_file.pug

 div(class="col s6 input-field")
  select(name="car_id")
    each val, index in dropDownCars
      if (dropDownCars.length > 0 amp;amp; selectedCar amp;amp; val.car_id == selectedCar)
        option(value=val.car_id selected="selected") #{val.car_name}
      else
        option(value=val.car_id) #{val.car_name}
  label Cars
    div(class="col s4")
 

На данный момент я получаю дублированные названия автомобилей в моем выпадающем меню. Любая помощь будет оценена.

Комментарии:

1. Я предлагаю отфильтровать отдельные автомобили dropDownCars до того, как они будут переданы в этот шаблон

Ответ №1:

Как указывает @sawim, было бы лучше попытаться отфильтровать дубликаты в массиве, прежде чем передавать его в шаблон Pug. Однако, если это невозможно, вы можете сделать что-то вроде этого:

 select(name='car_id')
  - let uniqueNames = []
  each car in dropDownCars
    if (-1 === uniqueNames.indexOf(car.car_name))
      - uniqueNames.push(car.car_name)
      option(value= car.car_id, selected= (car.car_id === selectedCar)) #{car.car_name}
 

Это перебирает автомобили и отображает option элемент только в том случае, если имя автомобиля не было замечено ранее. Это также упрощает логику добавления selected атрибута к соответствующему option , если есть выбранный автомобиль.