JavaScript
Чем отличается filter от map? Не вижу разницы
Все они перебирают массив и применяют указанное действие для каждого элемента массива. Не могу понять в чём разница. Объясните пожалуйста по возможности на языке близким к обычному человеку, без математических вузов и ученой степени
map не меняет длину массива: Сколько элементов получил, столько и возвращает, назначение: Получить новый массив, в котором по какому-то правилу (функции) изменены все элементы исходного массива.
filter, собстно, фильтрует: Если функция для данного элемента вернет false, он не попадет в финальный массив... Исходные значения при этом желательно не трогать. Хотя можно и менять.
А на уровне кода, отличаются так:
Array.prototype.my_map = function(fn) {
var result = [];
for (var i = 0; i < this.length; i++) {
result.push( fn(this[i], i, this) );
// что вернет функция - пойдет в возвращаемый массив.
}
return result;
}
Array.prototype.my_filter = function(fn) {
var result = [];
for (var i = 0; i < this.length; i++) {
if ( fn(this[i], i, this) ) result.push(this[i]);
// только если функция вернет true
}
return result;
}
console.log( [1, 2, 3].my_map(e => e * 2) ); // [2, 4, 6]
console.log( [1, 2, 3].my_filter(e => e < 2) ); // [1]
filter, собстно, фильтрует: Если функция для данного элемента вернет false, он не попадет в финальный массив... Исходные значения при этом желательно не трогать. Хотя можно и менять.
А на уровне кода, отличаются так:
Array.prototype.my_map = function(fn) {
var result = [];
for (var i = 0; i < this.length; i++) {
result.push( fn(this[i], i, this) );
// что вернет функция - пойдет в возвращаемый массив.
}
return result;
}
Array.prototype.my_filter = function(fn) {
var result = [];
for (var i = 0; i < this.length; i++) {
if ( fn(this[i], i, this) ) result.push(this[i]);
// только если функция вернет true
}
return result;
}
console.log( [1, 2, 3].my_map(e => e * 2) ); // [2, 4, 6]
console.log( [1, 2, 3].my_filter(e => e < 2) ); // [1]
Сергей Димитриев
Если я с помощью map верну из массива только честные числа, код ведь все равно сработает? Так зачем для этого использовать filter?
Разница в том что у них разные назначения. Map - трансформация массива. Filter - как не трудно догадаться, фильтрация
Разница в том, что эти функции возвращают. filter - отбирает те элементы, для которых функция вернула true. А map - возвращает массив из элементов исходного массива после применения к ним функции.
Сергей Димитриев
Если я с помощью map верну из массива только честные числа, код ведь все равно сработает? Так зачем для этого использовать filter?
ну не видишь - и керсним!
Похожие вопросы
- Здравствуйте. Уважаемые программисты, подскажите, как отобразить Map и Filter в нотивном виде, JavaScript?
- Знатоки, ответьте пожалуйста ответ на общий вопрос про Set & Map
- Сравниваю циклы while и for и хочу понять разницу между ними. Они выполняют условно одно и тоже. Это вся разница?
- В чем разница C++ и Java-Script
- В чем разница между Js и Java?
- чем отличаются фреймворки JQuerry, Angular, React, что лучше для каких задач и что из них вы больше предпочитаете?
- Чем javascipt отличается от других?
- Чем отличается разработчик на javascript от разработчика на frontend?
- Чем react.js отличается от javascript?
- Насколько сильно отличается JavaScript от TypeScipt? Какие отличия, плюсы и минусы каждого ?