Преобразовать объект в массив объекта Javascript - PullRequest
1 голос
/ 17 апреля 2020

Ниже приведен мой объект, который я хочу преобразовать в массив, но, похоже, я что-то здесь упускаю. Пожалуйста, дайте мне знать, что я делаю здесь не так.

Код -

var langObj = {
    "CON1010": {
    "countryName": "Poland",
    "countryCode": "pl",
    "localLanguages": [
        {
            "language": "English",
            "languageCode": "en"
        },
        {
            "language": "Polish",
            "languageCode": "en"
        }
      ]
    },
    "CON1011": {
        "countryName": "UK",
        "countryCode": "uk",
        "localLanguages": [
            {
                "language": "English",
                "languageCode": "en"
            }
        ]
    }
};


var res = Object.entries(langObj).map(([value, label]) => ({value, label}));
console.log(res);

Ожидаемый результат -

[
    {
        "CON1010": {
            "countryName": "Poland",
            "countryCode": "pl",
            "localLanguages": [
                {
                    "language": "English",
                    "languageCode": "en"
                },
                {
                    "language": "Polish",
                    "languageCode": "en"
                }
            ]
        }
    },
    {
        "CON1011": {
            "countryName": "UK",
            "countryCode": "uk",
            "localLanguages": [
                {
                    "language": "English",
                    "languageCode": "en"
                }
            ]
        }
    }
]

Ответы [ 3 ]

5 голосов
/ 17 апреля 2020

Вам нужны квадратные скобки, чтобы получить динамически оцененное имя поля:

var res = Object.entries(langObj).map(([value, label]) => ({[value]:label}));

var langObj = {
    "CON1010": {
      "countryName": "Poland",
      "countryCode": "pl",
      "localLanguages": [
        {
          "language": "English",
          "languageCode": "en"
        },
        {
          "language": "Polish",
          "languageCode": "en"
        }
      ]
    },
    "CON1011": {
      "countryName": "UK",
      "countryCode": "uk",
      "localLanguages": [
        {
          "language": "English",
          "languageCode": "en"
        }
      ]
    }
};


var res = Object.entries(langObj).map(([value, label]) => ({[value]:label}));
console.log(res);
2 голосов
/ 17 апреля 2020

Немного, должно быть

var res = Object.entries(langObj).map(([key, value]) => ({ [key]: value }));
1 голос
/ 17 апреля 2020

Вы устанавливаете значение и метку в своем объекте. Вы хотите использовать «значение» в качестве ключа. Итак, вы хотите вернуть { [value]: label }

var langObj = {
  "CON1010": {
    "countryName": "Poland",
    "countryCode": "pl",
    "localLanguages": [{
        "language": "English",
        "languageCode": "en"
      },
      {
        "language": "Polish",
        "languageCode": "en"
      }
    ]
  },
  "CON1011": {
    "countryName": "UK",
    "countryCode": "uk",
    "localLanguages": [{
      "language": "English",
      "languageCode": "en"
    }]
  }
};


var res = Object.entries(langObj)
  .map(([value, label]) =>
    ({ [value]: label })
  );
console.log(res);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...