Вставка вложенных свойств в массив JSON в Angular - PullRequest
0 голосов
/ 21 октября 2019

У меня есть ответ JSON, подобный этому:

    {
      "AD": {
        "name": "Andorra",
        "native": "Andorra",
        "phone": "376",
        "continent": "EU",
        "capital": "Andorra la Vella",
        "currency": "EUR",
        "languages": [
          "ca"
        ]
      },
      "AE": {
    "name": "United Arab Emirates",
    "native": "دولة الإمارات العربية المتحدة",
    "phone": "971",
    "continent": "AS",
    "capital": "Abu Dhabi",
    "currency": "AED",
    "languages": [
      "ar"
    ]
  },

И я хочу перебрать только столицы стран. Но на данный момент я могу получить только ключ от contry, и я не могу достичь вложенных свойств. Я использую этот код в своей подписке:

subscribe(data=>{
        let cityProps=Object.keys(data);
        let cityList=[]
        for(let prop in cityProps){
          cityList.push(cityProps[prop]);

        }
        this.cities=cityList;
        console.log(cityList)

Я понимаю, что эта логика даст мне только массив "AD", "AE" и так далее. Но как я могу получить имена?

Ответы [ 2 ]

1 голос
/ 21 октября 2019

Вы должны использовать это так -

for(let prop in cityProps){
     cityList.push(cityProps[prop].name);
}

const a = {
      "AD": {
        "name": "Andorra",
        "native": "Andorra",
        "phone": "376",
        "continent": "EU",
        "capital": "Andorra la Vella",
        "currency": "EUR",
        "languages": [
          "ca"
        ]
      },
      "AE": {
    "name": "United Arab Emirates",
    "native": "دولة الإمارات العربية المتحدة",
    "phone": "971",
    "continent": "AS",
    "capital": "Abu Dhabi",
    "currency": "AED",
    "languages": [
      "ar"
    ]
  }}
  
 const b = [];
 for(let prop in a){
     b.push(a[prop].name);
}
 
 console.log(b);
0 голосов
/ 21 октября 2019
var data = {
      "AD": {
        "name": "Andorra",
        "native": "Andorra",
        "phone": "376",
        "continent": "EU",
        "capital": "Andorra la Vella",
        "currency": "EUR",
        "languages": [
          "ca"
        ]
      },
      "AE": {
    "name": "United Arab Emirates",
    "native": "دولة الإمارات العربية المتحدة",
    "phone": "971",
    "continent": "AS",
    "capital": "Abu Dhabi",
    "currency": "AED",
    "languages": [
      "ar"
    ]
  }};

//this will return array of capitals
Object.values(data).map(e => e.capital); 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...