Как отобразить ключ и значения в машинописи? - PullRequest
0 голосов
/ 08 января 2019

У меня есть следующий ответ, который мне нужно отобразить в пригодном для использования формате в машинописи,

response => {

    Vehicles:
        BMW: Array(3)
            0: {ModelName: "M3", ModelUid: "14711"}
            1: {ModelName: "X3", ModelUid: "14712"}
            2: {ModelName: "Z4", ModelUid: "14713"}

        Aston Martin: Array(4)
            0: {ModelName: "DBS", ModelUid: "14742"}
            1: {ModelName: "DB9", ModelUid: "14743"}
            2: {ModelName: "V12 Vantage", ModelUid: "14744"}
            3: {ModelName: "Virage", ModelUid: "14745"}

Я сделал ниже, что работает, но я думаю, что должен быть более хороший способ.

var vehicles = new Array();

var keys = Object.keys(response.Vehicles);

keys.forEach(key => {
    vehicles.push({ Manufacturer: key, Models: [] });
});

for (var i = 0; i < vehicles.length; i++)
{
    var name = vehicles[i].Manufacturer;
    vehicles[i].Models = response.Vehicles[name];
}

Любая помощь приветствуется.

Спасибо

1 Ответ

0 голосов
/ 14 января 2019

Вы могли бы упростить ваш код до этого:

var vehicles = new Array();

var keys = Object.keys(response.Vehicles);

keys.forEach(key => {
    vehicles.push({ Manufacturer: key, Models: response.Vehicles[name] });
});

Нет необходимости повторять цикл Vehicles дважды.

В целом, однако, вы можете использовать Array.map для преобразования данных, подобного этому. Всегда ли это «лучше», это немного субъективно, но это сработает:

const vehicles = Object.keys(response.Vehicles).map((vehicleKey) => {
    return {
        Manufacturer: vehicleKey,
        Models: response.Vehicles[vehicleKey],
    }
});

Как правило, вам нужно Array.forEach в JavaScript только тогда, когда вам нужен побочный эффект, а это не ваш случай; вам нужно только преобразование данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...