如何在javascript中调整对象值

如何在javascript中调整对象值,javascript,arrays,object,multidimensional-array,nested,Javascript,Arrays,Object,Multidimensional Array,Nested,我需要在javascript中调整对象值。ent是输入数组。语言中的第一个对象由数组值组成,我需要将对象值展平。[[{}]、{}]、{}]、{}]] 将值导出为语言:[{},{},{}] const ent =[{ "name": "Afghanistan", "topLevelDomain": [ ".af" ], "alpha2Code": &

我需要在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.log(output);


Ouput是一个数组,其中selected keys的值为return,但我需要调整对象的值

 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 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.log(output);


我试过这样做:

const outputKeys=['name'、'capital'、'region'、'languages'、'flag']

const output=ent.map(项=> outputKeys.reduce((val,key)=>({…val[key]:项[key].flat(无穷大)}),{}) ); 控制台日志(输出)


注意第一个对象,该语言由嵌套数组组成!提前感谢。

您可以使用“分解结构”仅选择特定属性,然后。仅展开语言数组

常数=[{
“姓名”:“阿富汗”,
“topLevelDomain”:[
“.af”
],
“字母代码”:“AF”,
“alpha3Code”:“AFG”,
“呼叫代码”:[
"93"
],
“首都”:“喀布尔”,
“替换拼写”:[
“AF”,
“Afġānistān”
],
“区域”:“亚洲”,
“次区域”:“南亚”,
“人口”:27657145,
“latlng”:[
33,
65
],
“人口名称”:“阿富汗”,
“面积”:652230,
“基尼”:27.8,
“时区”:[
“UTC+04:30”
],
“边界”:[
“IRN”,
“巴基斯坦”,
“TKM”,
“UZB”,
“TJK”,
“CHN”
],
“国家名称”:“国家名称”,
“数字代码”:“004”,
“货币”:[
{
“代码”:“AFN”,
“姓名”:“阿富汗阿富汗人”,
“符号”:“؋”
}
],
“语言”:[
[{
“iso639_1”:“ps”,
“iso639_2”:“pus”,
“姓名”:“普什图语”,
“国家名称”:“国家名称”
}],
[{
“iso639_1”:“uz”,
“iso639_2”:“uzb”,
“姓名”:“乌兹别克语”,
“nativeName”:“Oʻzbek”
}],
[{
“iso639_1”:“tk”,
“iso639_2”:“tuk”,
“姓名”:“土库曼”,
“nativeName”:“蒂尔克曼”
}],
],
“翻译”:{
“de”:“阿富汗”,
“es”:“Afganistán”,
“fr”:“阿富汗”,
“ja”:アフガニスタン",
“它”:“阿富汗”,
“br”:“Afeganistão”,
“pt”:“Afeganistão”,
“nl”:“阿富汗”,
“hr”:“Afganistan”,
“fa”:“fa”
},
“旗帜”:https://restcountries.eu/data/afg.svg",
“区域集团”:[
{
“首字母缩略词”:“南盟”,
“名称”:“南亚区域合作联盟”,
“其他首字母缩略词”:[],
“其他名称”:[]
}
],
“cioc”:“AFG”
},
{
“名称”:“奥兰群岛”,
“topLevelDomain”:[
“.ax”
],
“alpha2Code”:“AX”,
“alpha3Code”:“ALA”,
“呼叫代码”:[
"358"
],
“资本”:“玛丽哈门”,
“替换拼写”:[
“斧头”,
“Aaland”,
“阿兰德”,
“阿维南马”
],
“区域”:“欧洲”,
“次区域”:“北欧”,
“人口”:28875,
“latlng”:[
60.116667,
19.9
],
“demonym”:“Ålandish”,
“面积”:1580,
“基尼”:空,
“时区”:[
“UTC+02:00”
],
“边界”:[…],
“nativeName”:“奥兰”,
“数字代码”:“248”,
“货币”:[
{
“代码”:“欧元”,
“名称”:“欧元”,
“符号”:“€”
}
],
“语言”:[
{
“iso639_1”:“sv”,
“iso639_2”:“swe”,
“姓名”:“瑞典语”,
“nativeName”:“svenska”
}
],
“翻译”:{
“德”:“奥兰”,
“es”:“Alandia”,
“fr”:“奥兰”,
“ja”:オーランド諸島",
“it”:“Isole Aland”,
“br”:“Ilhas de Aland”,
“pt”:“Ilhas de Aland”,
“nl”:“奥兰登”,
“hr”:“奥兰斯基奥托奇”,
“fa”:“fa”
},
“旗帜”:https://restcountries.eu/data/ala.svg",
“区域集团”:[
{
“首字母缩略词”:“欧盟”,
“名称”:“欧盟”,
“其他首字母缩略词”:[],
“其他名称”:[]
}
],
“cioc”:”
},
{
“姓名”:“阿尔巴尼亚”,
“topLevelDomain”:[
“.al”
],
“字母代码”:“AL”,
“alpha3Code”:“ALB”,
“呼叫代码”:[
"355"
],
“首都”:“地拉那”,
“替换拼写”:[
“AL”,
“Shqipëri”,
“Shqipëria”,
“Shqipnia”
],
“区域”:“欧洲”,
“次区域”:“南欧”,
“人口”:2886026,
“latlng”:[
41,
20
],
“人口名称”:“阿尔巴尼亚语”,
“面积”:28748,
“基尼”:34.5,
“时区”:[
“UTC+01:00”
],
“边界”:[
“MNE”,
“GRC”,
“MKD”,
“科斯”
],
“nativeName”:“Shqipëria”,
“数字代码”:“008”,
“货币”:[
{
“代码”:“全部”,
“名称”:“阿尔巴尼亚列克”,
“符号”:“L”
}
],
“语言”:[
{
“iso639_1”:“sq”,
“iso639_2”:“sqi”,
“姓名”:“阿尔巴尼亚语”,
“nativeName”:“Shqip”
}
],
“翻译”:{
“德”:“阿尔巴宁”,
“es”:“阿尔巴尼亚”,
“fr”:“Albanie”,
“ja”:アルバニア",
“它”:“阿尔巴尼亚”,
“br”:“Alb–nia”,
“pt”:“Alb–nia”,
“nl”:“阿尔巴尼”,
“hr”:“Albanija”,
“fa”:“fa”
},
“旗帜”:https://restcountries.eu/data/alb.svg",
“区域集团”:[
{
“首字母缩略词”:“CEFTA”,
“名称”:“中欧自由贸易协定”,
“其他首字母缩略词”:[],
“其他名称”:[]
}
],
“cioc”:“ALB”
},
];
const output=ent.map({name,capital,region,languages,flag})=>({
名称
首都
区域
语言:languages.flat(),
旗帜
}));

console.log(output);
向我们展示您的尝试。因此,这不是免费的代码编写服务。这里的目标是让您发布您的尝试,以解决您自己和其他人的问题