Невозможно заполнить массив из объекта JSON в Angular - PullRequest
0 голосов
/ 06 мая 2020

У меня есть следующий объект JSON:

Object { JP: "JAPAN", PAK: "PAKISTAN", IND: "INDIA", AUS: "AUSTRALIA" }

Это JSON - данные ответа, возвращенные из get call(HttpClient Angular).

Итак, теперь мне нужно заполнить это следующим образом для отображения в виде раскрывающегося списка.

countryList: { countryCode: string; countryName :string }[];

Я пробовал сделать следующее:

for (const key in resData) {
  if (resData.hasOwnProperty(key)) {
     var obj ={
       countryCode :key,
       countryName : resData[key]
      }
    this.countryList.push(obj);
  }
}

Но когда я выполняю, я получаю эту ошибку

"_this.countryList.push is not a function"

Что я делаю не так?

Ответы [ 3 ]

1 голос
/ 06 мая 2020

Опубликованный вами код определяет только тип countryList. Вам также необходимо инициализировать его как пустой массив, прежде чем вы сможете использовать его sh - см. Ниже.

countryList: { countryCode: string;countryName :string }[] = [];
0 голосов
/ 06 мая 2020

необходимо объявить countryList как список.

var resData={ JP: "JAPAN", PAK: "PAKISTAN", IND: "INDIA", AUS: "AUSTRALIA" };
countryList=[];
for (const key in resData) {
  if (resData.hasOwnProperty(key)) {
     var obj ={
       countryCode :key,
       countryName : resData[key]
      }
    countryList.push(obj);
  }
}
console.log(countryList)
0 голосов
/ 06 мая 2020

Вы можете получить entries из объекта, а затем map его в массив объектов:

Object.entries(countries).map(([key, value]) => ({
     countryCode: key,
     countryName: value
}))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...