Создание динамического объекта с динамическими ключами и нединамическим

#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);