Как преобразовать массив объектов в индексированный объект объектов в javascript? - PullRequest
0 голосов
/ 15 апреля 2020

enter image description here У меня есть следующий массив и изображение того, как его структура возвращается ко мне:

const connections = [1:{fromBox: 0, fromConnector: "port_0", toBox: 1, toConnector: "port_0"},
                     1:{fromBox: 0, fromConnector: "port_1", toBox: 1, toConnector: "port_1"}
                    ]

, и мне нужно создать объект с этой структурой, чтобы быть совместимым с моим кодом:

"connections": {
    "0": {
      "fromBox": "0",
      "fromConnector": "port_0",
      "toBox": "1",
      "toConnector": "port_0",
    },
    "1": {
      "fromBox": "0",
      "fromConnector": "port_1",
      "toBox": "1",
      "toConnector": "port_1"
    }
  }

Глядя на подобные сомнения, я понял, что с помощью метода сокращения я смогу достичь его, но при попытке поместить индекс, который они имеют в массиве, в объект, который он мне дает, как если бы элементы массива были неопределенными

      const connectionsKeys = Object.keys(connections);

      const result = connections.reduce((c, v) => {
        c[v.connectionsKeys] = c[v.connectionsKeys] || {}; 

        return c;
      }, {});

Буду признателен за любую помощь или руководство. Заранее спасибо

Ответы [ 2 ]

1 голос
/ 15 апреля 2020

Первый снимок из вашего поста (тот, что из консоли), структурно отличается от того, который назначен постоянным соединениям. Изображение, переведенное в js код, должно выглядеть следующим образом

const connections = [{1:{fromBox: 0, fromConnector: "port_0", toBox: 1, toConnector: "port_0"}},
                 {1:{fromBox: 0, fromConnector: "port_1", toBox: 1, toConnector: "port_1"}}
                ]

Из этой структуры вы можете сделать следующее сокращение, чтобы получить нужную структуру:

const result = connections.reduce((acc, curr, index) => {
    acc[index] = curr['1'];

    return acc;
  }, {});
1 голос
/ 15 апреля 2020

const connections = [{fromBox: 0, fromConnector: "port_0", toBox: 1, toConnector: "port_0"},
                     {fromBox: 0, fromConnector: "port_1", toBox: 1, toConnector: "port_1"}
                    ]


function convertToObject(arr){
  return Object.assign({},arr)
}

console.log(convertToObject(connections));
...