Sort Contacts from Adress Book Alphabetical

HI,

I have a function, that reads the phonebook. After getting the contacts, it should sort them.
The last time, I worked on my APP, it worked, now, it doesn’t.

This is my code:

import { Component } from '@angular/core';
import { IonicPage, NavController, NavParams } from 'ionic-angular';
import { Contacts } from '@ionic-native/contacts';

@IonicPage()
@Component({
  selector: 'page-telefonbuch',
  templateUrl: 'telefonbuch.html',
})

export class TelefonbuchPage {
  
  entries : any
  contacts1 = []

  constructor(public navCtrl: NavController, public navParams: NavParams, private contacts: Contacts) {
    this.contacts.find(["displayName", "phoneNumbers"], {multiple: true, hasPhoneNumber: true}).then((contacts) => {
      for (var i=0 ; i < contacts.length; i++){
        if(contacts[i].displayName !== null){
          var obj = {};
          obj["name"]   = contacts[i].displayName;
          obj["number"] = contacts[i].phoneNumbers[0].value;
          this.contacts1.push(obj)    // adding in separate array with keys: name, number
        }       
       }
    });
    this.entries    = this.contacts1;
  }

  compare(a,b) {
    if (a.name < b.name)
      return -1;
    if (a.name > b.name)
      return 1;
    return 0;
  }
 
  ionViewDidLoad() {
    this.entries.sort(this.compare);
  }

}

Currently it does not return sorted contacts.
What is wrong with my code?

Many Thanks,
Lars

Hi, @LarsS

Try this:

var options = {
    filter : "",
    multiple:true,
    hasPhoneNumber:true	
};


this.contacts.find(["*"],options).then((res) => {
	var phoneContactsJson=[];

	for (var i = 0; i < contacts.length; i++) {
        var contact = contacts[i];
        var no =contacts[i].name.formatted;
        var phonenumber=contacts[i].phoneNumbers;
        if(phonenumber != null) {
            for(var n=0;n<phonenumber.length;n++) {
                var type=phonenumber[n].type;
                if(type=='mobile') {
                    var phone=phonenumber[n].value;
                    var mobile;
                    if(phone.slice(0,1)=='+' || phone.slice(0,1)=='0'){
                        mobile=phone.replace(/[^a-zA-Z0-9+]/g, "");
                    }
                    else {
                        var mobile_no=phone.replace(/[^a-zA-Z0-9]/g, "");
                        mobile=countrycode+mobile_no;
                    }

                    var contactData={
                        "name":no,
                        "number":mobile,
                    }
                    phoneContactsJson.push(contactData);
                }
            }
        }
    }

		phoneContactsJson.sort(function(a, b) {
			var nameA = a.name.toUpperCase(); // ignore upper and lowercase
			var nameB = b.name.toUpperCase(); // ignore upper and lowercase

			if (nameA < nameB) {
				return -1;
			}
			if (nameA > nameB) {
				return 1;
			}

			// names must be equal
			return 0;
		});

		console.log("phoneContactsJson >>>",phoneContactsJson);

}).catch((err) => {
  	console.log('err',err);
});

Thanks.