• Как добавить фильтрацию по select к существующему поиску?

    0xD34F
    @0xD34F Куратор тега Vue.js
    Добавляете в компонент свойство, которое будет содержать текущее значение выпадающего списка:

    data: () => ({
      status: '',
      ...

    Получаете массив возможных (не считая дефолтного) значений выпадающего списка:

    computed: {
      statuses() {
        return [...new Set(this.characters.map(n => n.status))];
      },
      ...

    Сам список пусть создаётся так, например:

    <select v-model="status">
      <option value="">&lt; ALL &gt;</option>
      <option v-for="n in statuses">{{ n }}</option>
    </select>

    Ну и фильтруете, наконец:

    computed: {
      filteredCharacters() {
        const search = this.search.toLowerCase();
        const status = this.status;
    
        return this.characters.filter(n => (
          (!search || n.name.toLowerCase().includes(search)) &&
          (!status || status === n.status)
        ));
      },
      ...
    Ответ написан
    1 комментарий
  • Как добавить фильтрацию по select к существующему поиску?

    Aetae
    @Aetae Куратор тега Vue.js
    Тлен
    Ну и какие проблемы по образу и подобию сделать?
    Все ответы у тебя уже есть в коде.
    <select v-model="species">
    data: {
      species: '',
    searchCharacter() {
      return this.characters.filter((character) => {
        return character.name.toLowerCase().includes(this.search.toLowerCase())
        && character.species.toLowerCase().includes(this.species.toLowerCase());
      });
    },

    Впредь используй логику. Даже не зная javascript и vue, имея только голову на плечах можно было бы дойти до этого ответа.
    Ответ написан
    1 комментарий
  • Изучение swift на High Sierra имеет ли смысл?

    DevMan
    @DevMan
    не будет доступа к последним sdk.
    но для обучения это не особо принципиально.
    Ответ написан
    Комментировать
  • Как это понять?

    theobroma
    @theobroma
    javascript developer (ReactJS)
    1)let arr = str.split(' ');
    Возьмет строку, в данном случае 'aa bb cc aa bb aa', разобьет на части используя пробел как разделитель. В результате получим:
    let arr = ['aa', 'bb', 'cc', ' aa', 'bb', 'aa']
    2) Следующий кусок кода просто произведет подсчет одинаковых частей.
    return arr.reduce((acc, rec, index) => {
        return (typeof acc[rec] !== 'undefined')
          ? { ...acc, [rec]: acc[rec] + 1 }
          : { ...acc, [rec]: 1 }
      }, {});
    Рассмотрим его подробнее. Начнем с аргументов:
    acc – последний результат вызова функции, он же «промежуточный результат».
    rec – текущий элемент массива, элементы перебираются по очереди слева-направо.
    index – номер текущего элемента.

    Что собственно происходит:
    -typeof acc[rec] !== 'undefined' проверит есть ли в объекте 'acc' ключ 'rec'.
    - и если мы уже встречали такой( например когда "aa", но уже во второй раз ), тогда изменить значение этого ключа прибавив 1.{ ...acc, [rec]: acc[rec] + 1 }
    - если же такого ключа еще не было, то создадим его со значением 1, ибо он в первый раз попался{ ...acc, [rec]: 1 }
    Ответ написан
    6 комментариев