мне нужно сгладить значения объекта в 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(выход);
обратите внимание на первый объект, язык состоит из вложенных массивов! заранее спасибо .
@charlietfl извините, я новичок в stackoverflow, это мой первый вопрос, плохо, я этого не знаю!
@charlietfl я добавил свою попытку, пожалуйста, посмотрите ее
вы хотите сделать это только для объекта языков? или для каждого объекта
@Ashu Ашу, я хочу сделать, если ключ состоит из вложенного массива, он должен быть сбит!
Вы можете использовать деструктурирование только для выбора определенных свойств, а затем .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);
Покажите нам, что вы пробовали. SO не является бесплатной службой написания кода. Цель здесь состоит в том, чтобы вы опубликовали свои попытки решить свою проблему, а другие помогли, когда они не работают должным образом. См. How to Ask и минимальный воспроизводимый пример