Как заказать массив объектов в Angular 8? - PullRequest
0 голосов
/ 22 апреля 2020

У меня есть действующий API, в котором есть данные в формате JSON, и я пытаюсь отобразить его на своем веб-сайте (для изучения веб-разработки). Я действительно запрашивал данные, чтобы данные отображались на моем веб-сайте, но проблема в том, как упорядочить мои данные по «Странам»? Любая помощь, пожалуйста

"countries": [
{
  "country": "United States",
  "countryCode": "US",
},
{
  "country": "Spain",
  "countryCode": "ES",
},

Ответы [ 2 ]

1 голос
/ 22 апреля 2020

Сначала создайте класс модели, который представляет ваш входящий объект, как показано ниже -

export class Countries {
    country: string;
    countryCode: string;
}

Затем инициализируйте его как массив объектов -

countriesModel : Countries [] = [];

Преобразуйте ваш JSON к модели путем ее анализа -

this.countryModel = JSON.parse(your_country-object);

После этого вызовите функцию sortCountries и передайте свойство в объекте, по которому вы хотите выполнить сортировку -

this.sortCountries(p => p.country, 'ASC');

Наконец, ваши функции сортировки тело должно выглядеть примерно так -

sortCountries<T>(countryName: (c: countriesModel) => T, order: 'ASC' | 'DESC'): void {
this.countriesModel.sort((a, b) => {
  if (countryName(a) < countryName(b)) {
    return -1;`enter code here`
  } else if (countryName(a) > countryName(b)) {
    return 1;
  } else {
    return 0;
  }
});

if (order === 'DESC') {
  this.countriesModel.reverse();
}

}

1 голос
/ 22 апреля 2020

U можете попробовать

sortbyKey(obj,key){
  return obj.sort(function(a, b) {
    var keyA = a[key],
      keyB = b[key];
    if (keyA < keyB) return -1;
    if (keyA > keyB) return 1;
    return 0;
  });

}

пример ниже

var list={"countries": [
{
  "country": "United States",
  "countryCode": "US",
},
{
  "country": "Spain",
  "countryCode": "ES",
}
]
}

function sortbyKey(obj,key){
  return obj.sort(function(a, b) {
    var keyA = a[key],
      keyB = b[key];
    if (keyA < keyB) return -1;
    if (keyA > keyB) return 1;
    return 0;
  });
  
}
list.countries=sortbyKey(list.countries,"country")

console.log(list)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...