Введение
В этом практическом занятии мы изучим концепцию инициализации и заполнения массива значениями, сгенерированными функцией, до тех пор, пока не будет достигнуто определенное условие. Мы будем использовать функцию initializeArrayUntil, которая принимает два аргумента: conditionFn и mapFn. В ходе этого практического занятия вы глубже познакомитесь с тем, как использовать эту функцию для генерации массивов с пользовательскими значениями и условиями.
Как инициализировать массив до тех пор, пока не будет достигнуто определенное условие
Для начала практики программирования откройте Терминал/SSH и введите node.
Следуйте шагам по инициализации и заполнению массива значениями, сгенерированными функцией, до тех пор, пока не будет достигнуто определенное условие:
- Создайте пустой массив
arr, переменную индексаiи элементel. - Используйте цикл
do...whileдля добавления элементов в массив с использованием функцииmapFnдо тех пор, пока функцияconditionFnне вернетtrueдля заданного индексаiи элементаel. - Функция
conditionFnпринимает три аргумента: текущий индекс, предыдущий элемент и сам массив. - Функция
mapFnпринимает три аргумента: текущий индекс, текущий элемент и сам массив.
Вот код:
const initializeArrayUntil = (conditionFn, mapFn) => {
const arr = [];
let i = 0;
let el = undefined;
do {
el = mapFn(i, el, arr);
arr.push(el);
i++;
} while (!conditionFn(i, el, arr));
return arr;
};
Для использования функции initializeArrayUntil передайте в качестве аргументов две функции:
initializeArrayUntil(
(i, val) => val > 10, //conditionFn
(i, val, arr) => (i <= 1 ? 1 : val + arr[i - 2]) //mapFn
); // [1, 1, 2, 3, 5, 8, 13]
Этот код инициализирует массив последовательностью Фибоначчи до первого числа, превышающего 10. Функция conditionFn проверяет, превышает ли текущее значение 10, а функция mapFn генерирует следующее число в последовательности.
Резюме
Поздравляем! Вы завершили практическое занятие по инициализации массива до определенного условия. Вы можете выполнить больше практических занятий в LabEx, чтобы улучшить свои навыки.