Задать вопрос
@z1oN

Преподаватель попросил сократить код массива. Как можно это сделать?

Собственно, имеется два массива "s" и "u". Первый массив отвечает за id (местами class) ссылки, а второй массив за путь к этой id ссылке.
let s = ['#sg2002','#sg20003','#sg989','#gib','.mk','.doom','.hf','.mb','#action','#advent','#arcade','#educational','#fighting','#interactive','#other','#puzzle','#quest','#racing','#rpg','#simulation','#sports','#strategy','#tabletop'];
let u = ['side/sg2002.html','side/sg2003.html','side/sg98.html','side/gib.html','side/mk.html','side/doom.html','side/hf.html','side/mb.html','side/action.html','side/advent.html','side/arcade.html','side/education.html','side/fighting.html','side/interactive.html','side/other.html','side/puzzle.html','side/quest.html','side/racing.html','side/rpg.html','side/simulation.html','side/sports.html','side/strategy.html','side/tabletop.html'];
  • Вопрос задан
  • 4080 просмотров
Подписаться 2 Простой 6 комментариев
Решения вопроса 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Я вам в прошлом вопросе писал вариант, с ним вообще массива не надо.
В HTML-коде ко всем нужным элементам добавляется класс, например 'link', и data-атрибут со ссылкой, например data-url='sg2002'.
После этого достаточно в обработчике нажатия прочитать атрибут и построить ссылку:
$('.link').click(function() {
  let url = $(this).data('url');
  url = `side/${url}.html`;
  ...
}
Ответ написан
Пригласить эксперта
Ответы на вопрос 4
У тебя базовый путь у всех одинаковый, не обязательно хранить side/ и .html можешь потом добавить при разборе массива
Ответ написан
@ProDiAn
Я думаю, проблема не в самих массивах, а в целом во всей работе. Почему у тебя айдишники перемешаны с классами? Если ты потом делаешь путь к этой ссылке, то это очень похоже на якорь, а якорь вешается на айдишник, поскольку он уникален. Проблема скорее-всего в том, что ты захардкодил 2 массива, один из которых можно получить через
const idArray = Array.from(document.links).filter(item => item.id)

А второй:
const pathArray = idArray.map(item => `side/${item.id}.html`)


Как-то так.
Ответ написан
Комментировать
@Argentinium
const s = ['.class', '#id'];
const u = s.map(i=>`side/${i.slice(1)}.html`);
Ответ написан
@Katrychenko
Просто используй объекты :)
Ответ написан
Ваш ответ на вопрос

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

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