при поиске исчезает запятая в массиве

96
07 ноября 2019, 09:40

В общем при поиске, исчезает запятая если 2 должности. Если искать вручную имя, то запятая присутствует.

positionsName() { // на случай если должности будут в массиве
  let positionList = this.props.positionsList;
  if (positionList && Array.isArray(positionList) && positionList.length !== 0) {
    return positionList.map((each, index) => {
      return ( <
        span key = {
          index
        } > {
          each.label
        } {
          positionList.length > 1 && positionList.length < -1 !== index ? ',' : ''
        } < /span>
      );
    });
  } else {
    return ( <
      span key = "position_name" > {
        this.props.positionsName
      } < /span>
    );
  }
}

Данная функция используется здесь

<div className="contact-description">
    <div>
      <div
          className={
               !usersForChat ? read ? "textSearchUnitRead contact- 
               description-item" 
               : "textSearchUnit contact-description-item" 
               : "contact-description-item"
          }
          style={{
              color: color,
              maxHeight: 28,
              maxWidth: 300,
              margin: '1px 0px',
              whiteSpace: 'nowrap'
          }}
        >{number}</div>
        <div
          style={{
            color: 'grey',
            maxHeight: 28,
            width: 200,
            lineHeight: '14px',
            whiteSpace: 'nowrap'
          }}
        >{label}</div>
{this.props.visiblePosition && this.props.positionsName ? 
  <div className = 
    "user-position-right-panel"
  >{this.positionsName()}
  </div> 
    : ""
  }
  </div>
Answer 1

Проблема в некорректном условии.

positionList.length > 1 && positionList.length < -1 !== index ? ',' : ''

В данном случае тут идет определение нужно ли ставить запятую либо нет.

Правило простое: если больше одного элемента, и элемент не последний - поставить после него запятую.

За первую часть отвечает проверка positionList.length > 1

А вот со второй - проблема. Для проверки, что элемент не последний, нужно сравнить его индекс, с максимальным индексом в массиве (length-1), то есть условие должно выглядеть так:

index < positionList.length - 1
READ ALSO
Вспомогательные методы при отрисовке

Вспомогательные методы при отрисовке

Есть чат, в котором списком выводятся сообщения:

116
Не рабочий скрипт в GoogleSheets ,который показывает изменения в соседней ячейке/диапазоне

Не рабочий скрипт в GoogleSheets ,который показывает изменения в соседней ячейке/диапазоне

Этот вопрос уже поднимался в этой теме : не запускается скрипт И в конце дали рабочий скрипт,но проблема в том,что когда я начал его использовать...

94
Чем являются массивы в js

Чем являются массивы в js

Массив в js это специализированная форма объекта, а объект в js это ассоциативный массивТ

115
Тестирование во Vue

Тестирование во Vue

имеется REST приложение на VueХочу ко всему этому делу прикрутить тестирование на Jest + Vue-test-utils

125