@Creed1234

Как вывести элементы массива через стрелочную функцию?

Привет! Вопрос, скорее всего, примитивен, НО ...

Есть массив слов, которые я получаю из localstorage....

const favorites = JSON.parse(localStorage.getItem('favorites')) ?? []


Который я пытаюсь обработать (выбрать только четные элементы) и вставить в html ...

const html = renderList(favorites)

this.$el.insertAdjacentHTML('afterbegin', html)


function renderList(list) {
    if (list.length) {
        return `
        <ul>
           ${list.map((item, i) => {
                if (i % 2 === 0 || i === 0) {
                    `<li><a href="#" class="js-link">${item}</a></li>`
                }   
                }).join(' ')
            }    
            </ul>
`
    }
    return`<p class="center">Вы пока ничего не добавили</p>`
}


Так ничего не выводится.

Если же ...

function renderList(list) {
    if (list.length) {
        return `
        <ul>
           ${list.map((item, i) => `<li><a href="#" data-id="${i}"class="js-link">${item}</a></li>`).join(' ')}  
        </ul>
        `
    }
    return`<p class="center">Вы пока ничего не добавили</p>`
}


Данные выводятся, но я не могу их обработать...

Что делаю не так ?
  • Вопрос задан
  • 99 просмотров
Решения вопроса 1
Kozack
@Kozack Куратор тега JavaScript
Thinking about a11y
(item, i) => {
  if (i % 2 === 0 || i === 0) {
    `<li><a href="#" class="js-link">${item}</a></li>`
  }
}


Эта функция ничего не возвращает

Нужно
(item, i) => {
  if (i % 2 === 0 || i === 0) {
    return `<li><a href="#" class="js-link">${item}</a></li>`
  }
}
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Стрелочная функция тут не нужна, тут нужно читать документацию.
У тебя используется map который должен возвращять новый елемент массива, он у тебя ничего не возвращает. Кроме того если ты в map поставишь if он у тебя вернет или новый елемент массива или undefined что тоже поламает логику.
Стрелочная функция у тебя сработала потому что там в короткой записи не нужен return про который ты забыл.
Почитай про reduce а еще лучше тупо открой Фленегана и прочитай от корки до корки.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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