Проблема в написании функцию map, которая будет принимать в качестве аргумента массив arr и функцию
Здравствуйте?Стоит следующая задача
- Написать функцию map, которая будет принимать в качестве аргумента массив arr и функцию, которая в свою очередь будет осуществлять преобразование каждого элемента массива в вид.
"<li class="list-group-item">Tom</li>". 2. Вывести элементы трансформированного массива в ul с id="list". Вывод должен осуществляться в отсортированном по алфавиту виде
Что я предпринял:
<div class="container">
<h1>List of my friends</h1>
<ul id="list" class="list-group">
<li class="list-group-item">Example</li>
</ul>
</div>
//JS
function createList() {
let list = document.createElement("ul");
let listItem;
let currentLetter = '';
for (let i = 0, length = arr.length; i < length; i++) {
let item = arr[i];
let firstLetter = item.charAt(0);
if (currentLetter != firstLetter) {
currentLetter = firstLetter;
}
listItem = document.createElement("li");
listItem.innerHTML = item;
list.appendChild(listItem);
}
return list;
}
document.body.appendChild(createList());
Вывод имен в браузере осуществляется в отсортированном порядке. Сколько не лазил по МДН и не читал про преобразование массивов, смекалки и знаний не хватило. Прошу, подскажите ресурс с подходящей информацией или возможный алгоритм, как выполнить все условия задачи. Спасибо и с уважением
Ответы (1 шт):
Автор решения: OPTIMUS PRIME
→ Ссылка
Для сортировки, есть встроенная функция .sort()
function map(arr, fn) {
for (let i = 0; i < arr.length; i++) {
arr[i] = fn(arr[i], i, arr);
// Вызывает полученную функцию fn,
// заменяет элемент массива на результат её вызова (то, что вернет return)
// * Три аргумента переданы по традиции. Здесь нужен только 1-й
}
}
let arr = ["Tom", "John", "Pumba", "Anna"];
map(arr, function(name) {
// name == arr[i]
return '<li class="list-group-item">' + name + '</li>';
});
let list = document.querySelector("#list");
list.innerHTML = arr.sort((a, b) => a < b ? -1 : 1).join("");
<ul id="list"></ul>
У массивов также есть свой метод .map(), но он создает и возвращает новый массив, не меняя значения исходного массива.