Конвертировать пары ключ / значение в объект, используя lodash - PullRequest
0 голосов
/ 17 мая 2018

У меня есть набор пар ключ / значение, которые я хотел бы преобразовать как объект.Каков наилучший возможный способ сделать это, используя lodash.

maps: {
  "Recipe1" : ["Sugar", "Milk", "Bread"],
  "Recipe2" : ["Rice", "Salt", "Carrots"] 
}

Ищете выход, который будет выглядеть ниже

{
  name: "Recipe1",
  ingredients: ["Sugar", "Milk", "Bread"]
},
{
  name: "Recipe2",
  ingredients: ["Rice", "Salt", "Carrots"]
}

Ответы [ 3 ]

0 голосов
/ 17 мая 2018

Это довольно тривиально, чтобы обойтись без lodash, используя Object.entries(), Array.prototype.map(), деструктурированный параметр и сокращенные имена свойств для возвращаемого объекта:

const maps = {
  "Recipe1" : ["Sugar", "Milk", "Bread"],
  "Recipe2" : ["Rice", "Salt", "Carrots"] 
}

const output = Object.entries(maps).map(
  ([name, ingredients]) => ({ name, ingredients })
)

console.log(output)
0 голосов
/ 17 мая 2018

С Лодашем:

var maps = {
  "Recipe1" : ["Sugar", "Milk", "Bread"],
  "Recipe2" : ["Rice", "Salt", "Carrots"] 
};

var output = _.map(maps, function(value, key) { 
  return {name: key, ingredients: value};
});

console.log(output);
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.10/lodash.min.js"></script>
0 голосов
/ 17 мая 2018

Вы можете использовать Object.entries(), чтобы получить массив пар ключ / значение.Итерируйте массив пар с Array.map().Используйте деструктурирующее присвоение , чтобы получить параметры name и ingredients, и создайте объект результата с сокращенными именами свойств :

const maps = {
  "Recipe1" : ["Sugar", "Milk", "Bread"],
  "Recipe2" : ["Rice", "Salt", "Carrots"] 
};

const result = Object.entries(maps)
  .map(([name, ingredients]) => ({ name, ingredients }));
  
console.log(result);
...