Да, то, что я хочу, можно реализовать через return в функции, но меня волнует мой вопрос.
Почему arr не меняется при использовании функции?
function filterRange(arr, start, end) {
arr = arr.filter(item => (item >= start && item <= end));
}
let arr = [5, 3, 8, 1];
let filtered = filterRange(arr, 1, 4);
alert( filtered ); // 5, 3, 8, 1
alert( arr ); // 5, 3, 8, 1
function filterRange(arr, start, end) {
// т.к. ссылка на объект является значением, ф-ция получает копию этой ссылки
arr = arr.filter(item => (item >= start && item <= end));
// arr = ... - меняет копию ссылки, из-за этого изменения и не видны снаружи;
// в данном случае ссылке arr присваивается новый массив -
// arr.filter(item => (item >= start && item <= end));
}
let arr = [5, 3, 8, 1]; // arr - ссылка на место в памяти где лежит массив [5, 3, 8, 1];
let filtered = filterRange(arr, 1, 4); // ссылка передается аргументом в функцию;
alert( filtered ); // 5, 3, 8, 1
alert( arr ); // 5, 3, 8, 1
Дело в следующем... Аргументы ф-ции передаются по значению и ф-ция принимает только копию этого значения, а в JavaScript-е ссылки на объекты являются значениями. Т.е. в данном случае, ты перезаписываешь копию ссылки аргумента(массива), из-за этого изменения не видны снаружи. Но если ты изменишь сам объект,а не ссылку (например arr.push(20)), то внешний массив изменится.
function filterRange(arr, start, end) {
return arr.filter(item => (item >= start && item <= end));
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Подскажите, пожалуйста как собрать все значения value в массив,для последующей работы с нимВот пробую написать
Задание "Описать класс, представляющий треугольникПредусмотреть методы для создания объектов, вычисления площади, периметра и точки пересечения...
Есть страница с блоками разных цветовЕсть меню, по клику на пункт которого, происходит прокрутка к соответствующему блоку
Есть код, он рабочийЯ новичок в промисах, можно ли как-то упростить его? Знаю, что сделал неправильно, второй промис можно как-то вынести отдельно