Часто в процессе работы с JavaScript возникает необходимость преобразовать каждое значение в объекте. Например, возьмем объект, где ключи — это названия продуктов, а значения — их цены.
let productPrices = { 'apple': 1, 'banana': 2, 'cherry': 3 }
И предположим, что нам нужно увеличить каждую цену на 10%. Как это можно сделать?
Многие знакомы с методом map для массивов, который выполняет функцию для каждого элемента массива и возвращает новый массив с результатами. К сожалению, такой встроенной функции для объектов в JavaScript нет. Но не стоит отчаиваться, потому что с помощью некоторых других методов JavaScript можно создать собственную функцию map для объектов.
function mapObject(obj, mapFn) {
return Object.keys(obj).reduce(function(result, key) {
result[key] = mapFn(obj[key]);
return result;
}, {});
}
Эта функция работает следующим образом:
Object.keys(obj)возвращает массив ключей объекта.reduceпроходит по каждому ключу и создает новый объектresult.mapFn(obj[key])применяет функциюmapFnк каждому значению объекта.- Результат
mapFnустанавливается как новое значение для ключа в объектеresult. - В конце
reduceвозвращает объектresultкак результат.
Теперь мы можем использовать эту функцию для увеличения цен на 10%:
let newPrices = mapObject(productPrices, function(price) {
return price * 1.1;
});
// newPrices теперь равно { 'apple': 1.1, 'banana': 2.2, 'cherry': 3.3 }
Это всего лишь один из способов решения данной проблемы. В JavaScript есть множество других подходов и методов, которые можно использовать для обработки и преобразования объектов.
Перейти в телеграм, чтобы получить результаты теста






Забрать
Добавить комментарий