кодесурса
«JavaScript

JavaScript: инвертировать пары ключ-значение объекта, не изменяя его

script1adsense2code
script1adsense3code

Основы 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 программирования


script1adsense4code
script1adsense5code
disqus2code
script1adsense6code
script1adsense7code
script1adsense8code
buysellads2code