У меня есть массив объектов, и я хочу преобразовать его в карту пар значений ключа с ключом id
. Тем не менее, я хочу сделать это как для корневого уровня, так и в пределах атрибута recipes
.подчеркивание для нескольких вложенных уровней массивов
Массив resp
:
[
{
"id": "1",
"recipes": [
{
"id": 4036
},
{
"id": 4041
}
]
},
{
"id": "2",
"recipes": [
{
"id": 4052
},
{
"id": 4053
}
]
}
]
Желаемая Result
{
"1": {
"id": "1",
"recipes": {
"4036": {
"id": 4036
},
"4041": {
"id": 4041
}
}
},
"2": {
"id": "2",
"recipes": {
"4052": {
"id": 4052
},
"4053": {
"id": 4053
}
}
}
}
Я знаю, как сделать это с помощью lodash через следующие функции:
Использования Underscore.js
function deepKeyBy(arr, key) {
return _(arr)
.map(function(o) { // map each object in the array
return _.mapValues(o, function(v) { // map the properties of the object
return _.isArray(v) ? deepKeyBy(v, key) : v; // if the property value is an array, run deepKeyBy() on it
});
})
.keyBy(key); // index the object by the key
}
Для этого проекта, однако, я ищу элегантное решение с использованием подчеркивания сделать то же самое - сделать все объекты, вложенные в массиве использовать id
в качестве ключа. Кто-нибудь знает, как это сделать?
Спасибо!
EDIT: Добавлен желаемый выходной формат
Вы можете показать структуру предполагаемого результата? – hackerrdave
@hackerrdave Я добавил желаемый результат выше – alchuang