Как сгладить значения объекта в javascript

мне нужно сгладить значения объекта в javascript. ent - это входной массив. первый объект, язык которого состоит из массива значений массива, мне нужно сгладить значение объекта. [[{}],[{}],[{}]]

оценил значение как язык: [{},{},{}];




const ent =[{
    "name": "Afghanistan",
    "topLevelDomain": [
      ".af"
    ],
    "alpha2Code": "AF",
    "alpha3Code": "AFG",
    "callingCodes": [
      "93"
    ],
    "capital": "Kabul",
    "altSpellings": [
      "AF",
      "Afġānistān"
    ],
    "region": "Asia",
    "subregion": "Southern Asia",
    "population": 27657145,
    "latlng": [
      33,
      65
    ],
    "demonym": "Afghan",
    "area": 652230,
    "gini": 27.8,
    "timezones": [
      "UTC+04:30"
    ],
    "borders": [
      "IRN",
      "PAK",
      "TKM",
      "UZB",
      "TJK",
      "CHN"
    ],
    "nativeName": "افغانستان",
    "numericCode": "004",
    "currencies": [
      {
        "code": "AFN",
        "name": "Afghan afghani",
        "symbol": "؋"
      }
    ],
    "languages": [
      [{
        "iso639_1": "ps",
        "iso639_2": "pus",
        "name": "Pashto",
        "nativeName": "پښتو"
      }],
      [{
        "iso639_1": "uz",
        "iso639_2": "uzb",
        "name": "Uzbek",
        "nativeName": "Oʻzbek"
      }],
      [{
        "iso639_1": "tk",
        "iso639_2": "tuk",
        "name": "Turkmen",
        "nativeName": "Türkmen"
      }],
    ],
    "translations": {
      "de": "Afghanistan",
      "es": "Afganistán",
      "fr": "Afghanistan",
      "ja": "アフガニスタン",
      "it": "Afghanistan",
      "br": "Afeganistão",
      "pt": "Afeganistão",
      "nl": "Afghanistan",
      "hr": "Afganistan",
      "fa": "افغانستان"
    },
    "flag": "https://restcountries.eu/data/afg.svg",
    "regionalBlocs": [
      {
        "acronym": "SAARC",
        "name": "South Asian Association for Regional Cooperation",
        "otherAcronyms": [],
        "otherNames": []
      }
    ],
    "cioc": "AFG"
  },
  {
    "name": "Åland Islands",
    "topLevelDomain": [
      ".ax"
    ],
    "alpha2Code": "AX",
    "alpha3Code": "ALA",
    "callingCodes": [
      "358"
    ],
    "capital": "Mariehamn",
    "altSpellings": [
      "AX",
      "Aaland",
      "Aland",
      "Ahvenanmaa"
    ],
    "region": "Europe",
    "subregion": "Northern Europe",
    "population": 28875,
    "latlng": [
      60.116667,
      19.9
    ],
    "demonym": "Ålandish",
    "area": 1580,
    "gini": null,
    "timezones": [
      "UTC+02:00"
    ],
    "borders": [],
    "nativeName": "Åland",
    "numericCode": "248",
    "currencies": [
      {
        "code": "EUR",
        "name": "Euro",
        "symbol": "€"
      }
    ],
    "languages": [
      {
        "iso639_1": "sv",
        "iso639_2": "swe",
        "name": "Swedish",
        "nativeName": "svenska"
      }
    ],
    "translations": {
      "de": "Åland",
      "es": "Alandia",
      "fr": "Åland",
      "ja": "オーランド諸島",
      "it": "Isole Aland",
      "br": "Ilhas de Aland",
      "pt": "Ilhas de Aland",
      "nl": "Ålandeilanden",
      "hr": "Ålandski otoci",
      "fa": "جزایر الند"
    },
    "flag": "https://restcountries.eu/data/ala.svg",
    "regionalBlocs": [
      {
        "acronym": "EU",
        "name": "European Union",
        "otherAcronyms": [],
        "otherNames": []
      }
    ],
    "cioc": ""
  },
  {
    "name": "Albania",
    "topLevelDomain": [
      ".al"
    ],
    "alpha2Code": "AL",
    "alpha3Code": "ALB",
    "callingCodes": [
      "355"
    ],
    "capital": "Tirana",
    "altSpellings": [
      "AL",
      "Shqipëri",
      "Shqipëria",
      "Shqipnia"
    ],
    "region": "Europe",
    "subregion": "Southern Europe",
    "population": 2886026,
    "latlng": [
      41,
      20
    ],
    "demonym": "Albanian",
    "area": 28748,
    "gini": 34.5,
    "timezones": [
      "UTC+01:00"
    ],
    "borders": [
      "MNE",
      "GRC",
      "MKD",
      "KOS"
    ],
    "nativeName": "Shqipëria",
    "numericCode": "008",
    "currencies": [
      {
        "code": "ALL",
        "name": "Albanian lek",
        "symbol": "L"
      }
    ],
    "languages": [
      {
        "iso639_1": "sq",
        "iso639_2": "sqi",
        "name": "Albanian",
        "nativeName": "Shqip"
      }
    ],
    "translations": {
      "de": "Albanien",
      "es": "Albania",
      "fr": "Albanie",
      "ja": "アルバニア",
      "it": "Albania",
      "br": "Albânia",
      "pt": "Albânia",
      "nl": "Albanië",
      "hr": "Albanija",
      "fa": "آلبانی"
    },
    "flag": "https://restcountries.eu/data/alb.svg",
    "regionalBlocs": [
      {
        "acronym": "CEFTA",
        "name": "Central European Free Trade Agreement",
        "otherAcronyms": [],
        "otherNames": []
      }
    ],
    "cioc": "ALB"
  },
  ];

  const outputKeys = ['name', 'capital', 'region', 'languages', 'flag'];

const output = ent.map(item =>
  outputKeys.reduce((val, key) => ({ ...val, [key]: item[key] }), {})
);
console.info(output);


Выход - это массив с выбранным значением ключей, который возвращается, но мне нужно сгладить значение объекта

 const output = [
  {
    name: 'Afghanistan',
    capital: 'Kabul',
    region: 'Asia',
    languages: [
      [{
        iso639_1: 'ps',
        iso639_2: 'pus',
        name: 'Pashto',
        nativeName: 'پښتو'
      }],
      [{
        iso639_1: 'uz',
        iso639_2: 'uzb',
        name: 'Uzbek',
        nativeName: 'Oʻzbek'
      }],
      [{
        iso639_1: 'tk',
        iso639_2: 'tuk',
        name: 'Turkmen',
        nativeName: 'Türkmen'
      }]
    ],
    flag: 'https://restcountries.eu/data/afg.svg'
  },
  {
    name: 'Åland Islands',
    capital: 'Mariehamn',
    region: 'Europe',
    languages: [
      {
        iso639_1: 'sv',
        iso639_2: 'swe',
        name: 'Swedish',
        nativeName: 'svenska'
      }
    ],
    flag: 'https://restcountries.eu/data/ala.svg'
  },
  {
    name: 'Albania',
    capital: 'Tirana',
    region: 'Europe',
    languages: [
      {
        iso639_1: 'sq',
        iso639_2: 'sqi',
        name: 'Albanian',
        nativeName: 'Shqip'
      }
    ],
    flag: 'https://restcountries.eu/data/alb.svg'
  }
];

мне нужно сгладить значение объекта. [[{}],[{}],[{}]]

оценил значение как язык: [{},{},{}];

я пытался сделать так:

const outputKeys = ['имя', 'столица', 'регион', 'языки', 'флаг'];

константный вывод = ent.map(item => outputKeys.reduce((val, key) => ({ ...val, [key]: item[key].flat(infinity) }), {}) ); console.info(выход);

обратите внимание на первый объект, язык состоит из вложенных массивов! заранее спасибо .

Покажите нам, что вы пробовали. SO не является бесплатной службой написания кода. Цель здесь состоит в том, чтобы вы опубликовали свои попытки решить свою проблему, а другие помогли, когда они не работают должным образом. См. How to Ask и минимальный воспроизводимый пример

charlietfl 25.12.2020 14:12

@charlietfl извините, я новичок в stackoverflow, это мой первый вопрос, плохо, я этого не знаю!

downey 25.12.2020 14:15

@charlietfl я добавил свою попытку, пожалуйста, посмотрите ее

downey 25.12.2020 14:18

вы хотите сделать это только для объекта языков? или для каждого объекта

Sudhanshu Kumar 25.12.2020 14:19

@Ashu Ашу, я хочу сделать, если ключ состоит из вложенного массива, он должен быть сбит!

downey 25.12.2020 14:21
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
5
138
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете использовать деструктурирование только для выбора определенных свойств, а затем .flat только для массива языков.

const ent =[{
    "name": "Afghanistan",
    "topLevelDomain": [
      ".af"
    ],
    "alpha2Code": "AF",
    "alpha3Code": "AFG",
    "callingCodes": [
      "93"
    ],
    "capital": "Kabul",
    "altSpellings": [
      "AF",
      "Afġānistān"
    ],
    "region": "Asia",
    "subregion": "Southern Asia",
    "population": 27657145,
    "latlng": [
      33,
      65
    ],
    "demonym": "Afghan",
    "area": 652230,
    "gini": 27.8,
    "timezones": [
      "UTC+04:30"
    ],
    "borders": [
      "IRN",
      "PAK",
      "TKM",
      "UZB",
      "TJK",
      "CHN"
    ],
    "nativeName": "افغانستان",
    "numericCode": "004",
    "currencies": [
      {
        "code": "AFN",
        "name": "Afghan afghani",
        "symbol": "؋"
      }
    ],
    "languages": [
      [{
        "iso639_1": "ps",
        "iso639_2": "pus",
        "name": "Pashto",
        "nativeName": "پښتو"
      }],
      [{
        "iso639_1": "uz",
        "iso639_2": "uzb",
        "name": "Uzbek",
        "nativeName": "Oʻzbek"
      }],
      [{
        "iso639_1": "tk",
        "iso639_2": "tuk",
        "name": "Turkmen",
        "nativeName": "Türkmen"
      }],
    ],
    "translations": {
      "de": "Afghanistan",
      "es": "Afganistán",
      "fr": "Afghanistan",
      "ja": "アフガニスタン",
      "it": "Afghanistan",
      "br": "Afeganistão",
      "pt": "Afeganistão",
      "nl": "Afghanistan",
      "hr": "Afganistan",
      "fa": "افغانستان"
    },
    "flag": "https://restcountries.eu/data/afg.svg",
    "regionalBlocs": [
      {
        "acronym": "SAARC",
        "name": "South Asian Association for Regional Cooperation",
        "otherAcronyms": [],
        "otherNames": []
      }
    ],
    "cioc": "AFG"
  },
  {
    "name": "Åland Islands",
    "topLevelDomain": [
      ".ax"
    ],
    "alpha2Code": "AX",
    "alpha3Code": "ALA",
    "callingCodes": [
      "358"
    ],
    "capital": "Mariehamn",
    "altSpellings": [
      "AX",
      "Aaland",
      "Aland",
      "Ahvenanmaa"
    ],
    "region": "Europe",
    "subregion": "Northern Europe",
    "population": 28875,
    "latlng": [
      60.116667,
      19.9
    ],
    "demonym": "Ålandish",
    "area": 1580,
    "gini": null,
    "timezones": [
      "UTC+02:00"
    ],
    "borders": [],
    "nativeName": "Åland",
    "numericCode": "248",
    "currencies": [
      {
        "code": "EUR",
        "name": "Euro",
        "symbol": "€"
      }
    ],
    "languages": [
      {
        "iso639_1": "sv",
        "iso639_2": "swe",
        "name": "Swedish",
        "nativeName": "svenska"
      }
    ],
    "translations": {
      "de": "Åland",
      "es": "Alandia",
      "fr": "Åland",
      "ja": "オーランド諸島",
      "it": "Isole Aland",
      "br": "Ilhas de Aland",
      "pt": "Ilhas de Aland",
      "nl": "Ålandeilanden",
      "hr": "Ålandski otoci",
      "fa": "جزایر الند"
    },
    "flag": "https://restcountries.eu/data/ala.svg",
    "regionalBlocs": [
      {
        "acronym": "EU",
        "name": "European Union",
        "otherAcronyms": [],
        "otherNames": []
      }
    ],
    "cioc": ""
  },
  {
    "name": "Albania",
    "topLevelDomain": [
      ".al"
    ],
    "alpha2Code": "AL",
    "alpha3Code": "ALB",
    "callingCodes": [
      "355"
    ],
    "capital": "Tirana",
    "altSpellings": [
      "AL",
      "Shqipëri",
      "Shqipëria",
      "Shqipnia"
    ],
    "region": "Europe",
    "subregion": "Southern Europe",
    "population": 2886026,
    "latlng": [
      41,
      20
    ],
    "demonym": "Albanian",
    "area": 28748,
    "gini": 34.5,
    "timezones": [
      "UTC+01:00"
    ],
    "borders": [
      "MNE",
      "GRC",
      "MKD",
      "KOS"
    ],
    "nativeName": "Shqipëria",
    "numericCode": "008",
    "currencies": [
      {
        "code": "ALL",
        "name": "Albanian lek",
        "symbol": "L"
      }
    ],
    "languages": [
      {
        "iso639_1": "sq",
        "iso639_2": "sqi",
        "name": "Albanian",
        "nativeName": "Shqip"
      }
    ],
    "translations": {
      "de": "Albanien",
      "es": "Albania",
      "fr": "Albanie",
      "ja": "アルバニア",
      "it": "Albania",
      "br": "Albânia",
      "pt": "Albânia",
      "nl": "Albanië",
      "hr": "Albanija",
      "fa": "آلبانی"
    },
    "flag": "https://restcountries.eu/data/alb.svg",
    "regionalBlocs": [
      {
        "acronym": "CEFTA",
        "name": "Central European Free Trade Agreement",
        "otherAcronyms": [],
        "otherNames": []
      }
    ],
    "cioc": "ALB"
  },
  ];
  
  
const output = ent.map(({name, capital, region, languages, flag}) => ({
  name,
  capital,
  region,
  languages: languages.flat(),
  flag
}));

console.info(output);

Другие вопросы по теме