Введение
В этом практическом занятии мы изучим, как разбивать массив на части на основе заданной функции с использованием JavaScript. Мы будем использовать метод Array.prototype.reduce(), чтобы накапливать разделенные значения в массив, проверяя при этом изменения в выводе заданной функции. В конце этого практического занятия вы глубоко поняли, как разбивать массивы на части в JavaScript.
Алгоритм разбиения массива
Чтобы разбить массив на части, следуйте шагам:
- Откройте Терминал/SSH и введите
node, чтобы начать практиковаться в написании кода. - Примените заданную функцию
fnк каждому значению в заданном массивеarr. - Разбивайте массив каждый раз, когда
fnвозвращает новое значение. - Используйте
Array.prototype.reduce(), чтобы создать накопительную переменную, которая будет содержать результирующий массив и последнее значение, возвращаемоеfn. - Используйте
Array.prototype.push(), чтобы добавить каждое значение изarrв соответствующую часть накопительного массива. - Верните результирующий массив.
Вот кодовая реализация:
const partitionBy = (arr, fn) =>
arr.reduce(
({ res, last }, v, i, a) => {
const next = fn(v, i, a);
if (next !== last) res.push([v]);
else res[res.length - 1].push(v);
return { res, last: next };
},
{ res: [] }
).res;
Пример использования:
const numbers = [1, 1, 3, 3, 4, 5, 5, 5];
partitionBy(numbers, (n) => n % 2 === 0); // [[1, 1, 3, 3], [4], [5, 5, 5]]
partitionBy(numbers, (n) => n); // [[1, 1], [3, 3], [4], [5, 5, 5]]
Резюме
Поздравляем! Вы завершили практическое занятие по разделению массива. Вы можете выполнить больше практических занятий в LabEx, чтобы улучшить свои навыки.