Функциональное программирование становится нормой, и сейчас вокруг него большой ажиотаж.
Поскольку я в основном использовал это с редуксом, чтобы убедиться, что мои редукторы работают правильно, эта функция будет полезна для всех, кому нужны некоторые функциональные функции javascript.
Ниже я покажу несколько примеров некоторых простых действий, которые мы используем, таких как: вставить в массив, удалить из массива, обновить элемент в массиве и обновить объект.
Первое действие будет мутирующим, а остальные — функциональными, не мутирующими.
Отправить в массив
//******** this mutates original list !!!!!!! ******* const simplePush = (list, item) => { list.push(item); return list; }; const concatPush = (list, item) => { return list.concat([item]); }; const es6Push = (list, item) => { return […list, item]; };
Удалить из массива
//******** this mutates original list !!!!!!! ******* const simpleRemove = (list, index) => { list.splice(index, 1); return list; }; const sliceRemove = (list, index) => { return list .slice(list, index) .concat(list.slice(index+1)); }; const es6Remove = (list, index) => { return [ …list.slice(0, index), …list.slice(index + 1) ]; };
Обновить элемент массива
//******** this mutates original list !!!!!!! ******* const simpleUpdate = (list, index, value) => { list[index] = value; return list; }; const sliceUpdate = (list, index, value) => { return list .slice(list, index) .concat([value]) .concat(list.slice(index+1)); }; const es6Update = (list, index, value) => { return [ …list.slice(0, index), value, …list.slice(index + 1) ]; };
Обновить значение объекта
//******** this mutates original list !!!!!!! ******* const simpleUpdate = (obj, key, val) => { obj[key] = val; return obj; }; const assignUpdate = (obj, key, val) => { let updateObj = {}; updateObj[key] = val; return Object.assign({}, obj, updateObj); };
Если вам понравилось или вы сочли это полезным, добавьте в закладки и лайкните :) и, конечно же, подпишитесь на меня и посетите мой блог