Я недавно читал о Functional Programming и Immutable Objects в Javascript. Каков способ функционального программирования использования метода map?Функциональное программирование для Array.map()
Скажем, я хочу удвоить значения в массиве. Я могу сделать:
var arr1 = [{a: 1}, {a: 2}, {a: 3}];
arr1.map(function(el){
el.a = el.a*2;
return el;
});
// arr1 => [{a: 2}, {a: 4}, {a: 6}]
Но это, кажется, нарушает правила функционального porgramming и неизменности обратный вызов будет изменять непосредственно элементы массива. Является ли следующий «правильный» способ сделать это?
var arr1 = [{a: 1}, {a: 2}, {a: 3}];
var arr2 = angular.copy(arr1);
var arr2 = angular.copy(arr1).map(function(el){
el.a = el.a*2;
return el;
});
arr1 = arr2;
// arr1 => [{a: 2}, {a: 4}, {a: 6}]
Или я просто переоцениваю это? Fiddle - here.
'Но это, кажется, нарушает правила функционального porgramming и неизменности. 'Как? поскольку 'map' не будет изменять существующий массив, он вернет новый. – gurvinder372
@ gurvinder372 сама карта не изменится, но -> 'el.a = el.a * 2' будет. – Keith
вы должны сделать так: 'var arr2 = arr1.map (el => el * 2);' – Redu