JavaScript: инвертировать пары ключ-значение объекта, не изменяя его
Основы JavaScript (синтаксис ES6): упражнение 78 с решением
Напишите программу на JavaScript, которая инвертирует пары ключ-значение объекта, не изменяя его. Соответствующее инвертированное значение каждого инвертированного ключа является массивом ключей, ответственных за генерацию инвертированного значения. Если функция указана, она применяется к каждому инвертированному ключу.
Пример решения:
HTML-код:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Invert the key-value pairs of an object, without mutating it</title>
</head>
<body>
</body>
</html>
Код JavaScript:
//#Source https://bit.ly/2neWfJ2
const invertKeyValues = (obj, fn) =>
Object.keys(obj).reduce((acc, key) => {
const val = fn ? fn(obj[key]) : obj[key];
acc[val] = acc[val] || [];
acc[val].push(key);
return acc;
}, {});
console.log(invertKeyValues({ a: 1, b: 2, c: 1 }));
console.log(invertKeyValues({ a: 1, b: 2, c: 1 }, value => 'group' + value));
Пример вывода:
{ "1": [ "а", "с"], "2": [ "Ь"]} { "Группа1": [ "а", "с"], "group2": [ "Ь"]}
Блок - схема:
Демонстрация в реальном времени:
См. Pen javascript-basic-упражнение-78-1 от w3resource ( @ w3resource ) в CodePen .
Улучшите этот пример решения и опубликуйте свой код через Disqus
Предыдущая: Напишите программу на JavaScript, которая будет перебирать все собственные свойства объекта, выполняя обратный вызов для каждого из них.
Далее: Напишите программу на JavaScript, которая будет принимать любое количество итерируемых объектов или объектов со свойством length и возвращает самый длинный из них.
Каков уровень сложности этого упражнения?
Новый контент: Composer: менеджер зависимостей для PHP , R программирования