#javascript #javascript-objects
#javascript #javascript-объекты
Вопрос:
Я пытаюсь создать вложенные объекты с некоторыми динамическими и нединамическими полями
это мой метод dataset let = {
"97": {
"mini_id": 75,
"score": "2",
"fe_id": 97
},
"98": {
"mini_id": 75,
"score": "2",
"fe_id": 98
},
"169": {
"mini_id": 76,
"score": "1",
"fe_id": 169
},
"170": {
"mini_id": 76,
"score": "1",
"fe_id": 170
},
"171": {
"mini_id": 76,
"score": "1",
"fe_id": 171
},
"172": {
"mini_id": 76,
"score": "3",
"fe_id": 172
}
}
И я пытаюсь получить данные в формате
var reduced = Object.values(arr).reduce((c,v) => {
c[v.mini_id] = c[v.mini_id] || {};
c[v.mini_id]["fees"][v.fe_id] = c[v.mini_id]["fees"][v.fe_id] || {};
return c;
}, {})
Я хочу, чтобы мой словарь выглядел так :
{75: {сборы: {97: {….}}}}
Похоже, ему не нравится, когда динамические ключи смешиваются с нединамическими. Есть предложения?
Комментарии:
1. Где находится параметр «сборы» в предоставленном вами образце объекта? Однако вы использовали этот параметр в функции уменьшения.
2. в объекте нет параметра «сборы», я хочу жестко закодировать его, чтобы он выглядел как 76: {сборы: {172:{….}}}
3. Не могли бы вы рассмотреть это в дополнение к вашему вопросу о том, как, по вашему мнению, должен выглядеть ваш объект?
4. Я отредактировал вопрос, у вас есть какие-либо предложения?
5. Нет никаких проблем, если часть вашего объекта была создана с использованием динамических ключей, а некоторые были только статическими. То, что я пытаюсь выяснить, — это конечный результат, который вы ожидаете, чтобы я мог подробнее изучить это. 🙂
Ответ №1:
Следующий фрагмент кода может вам помочь,
const arr = {
97: {
mini_id: 75,
score: "2",
fe_id: 97,
},
98: {
mini_id: 75,
score: "2",
fe_id: 98,
},
169: {
mini_id: 76,
score: "1",
fe_id: 169,
},
170: {
mini_id: 76,
score: "1",
fe_id: 170,
},
171: {
mini_id: 76,
score: "1",
fe_id: 171,
},
172: {
mini_id: 76,
score: "3",
fe_id: 172,
},
};
const reduced = Object.values(arr).reduce((c, v) => {
c[v.mini_id] = c[v.mini_id] ?? { fees: {} };
c[v.mini_id].fees[v.fe_id] = c[v.mini_id].fees[v.fe_id] ?? {};
return c;
}, {})
console.log(reduced);