简体   繁体   中英

How can i sort javascript.map array of names by ABC

I'm trying to sort array of first names by ABC from this javascript map. And also i want to hide the "undefined" row from the results:

 function contacts_callback(obj) { var contactinfo = obj.contacts.map(o => `${o.givenName} ${o.familyName} ${o.organizationName} ${ o.phoneNumbers.map(n => n.phoneNumber) }`) .join("<br>"); document.getElementById("demo").innerHTML = contactinfo; } // Demo var obj = {"success":true,"contacts":[ {"emailAddresses":[],"phoneNumbers":[{"label":"unknown","phoneNumber":"XXX-XXXXXXX"}],"givenName":"GGG","organizationName":"","familyName":"ggg",}, {"emailAddresses":[],"phoneNumbers":[{"label":"unknown","phoneNumber":"XXX-XXXXXXX"}],"givenName":"AAA","organizationName":"","familyName":"aaa",}, {"emailAddresses":[],"phoneNumbers":[{"label":"unknown","phoneNumber":"XXX-XXXXXXX"}],"givenName":"BBB","organizationName":"Apple","familyName":"bbb",}, {"emailAddresses":[],"phoneNumbers":[{"label":"unknown","phoneNumber":"XXX-XXXXXXX"}],"givenName":"undefined","organizationName":"","familyName":"",}, {"emailAddresses":[],"phoneNumbers":[{"label":"unknown","phoneNumber":"XXX-XXXXXXX"}],"givenName":"","organizationName":"Apple","familyName":"",}, ]}; contacts_callback(obj);
 <div id="demo"></div>

You could filter the undefined name rows and sort by givenName and then map the wanted result.

 function contacts_callback(obj) { var contactinfo = obj.contacts .filter(({ givenName }) => givenName !== 'undefined') .sort(({ givenName: a }, { givenName: b }) => a.localeCompare(b)) .map(({ givenName, familyName, organizationName, phoneNumbers }) => `${givenName} ${familyName} ${organizationName} ${ phoneNumbers.map(({ phoneNumber }) => phoneNumber) }`) .join("<br>"); document.getElementById("demo").innerHTML = contactinfo; } // Demo var obj = { success: true, contacts: [{ emailAddresses: [], phoneNumbers: [{ label: "unknown", phoneNumber: "XXX-XXXXXXX" }], givenName: "GGG", organizationName: "", familyName: "ggg" }, { emailAddresses: [], phoneNumbers: [{ label: "unknown", phoneNumber: "XXX-XXXXXXX" }], givenName: "AAA", organizationName: "", familyName: "aaa" }, { emailAddresses: [], phoneNumbers: [{ label: "unknown", phoneNumber: "XXX-XXXXXXX" }], givenName: "BBB", organizationName: "Apple", familyName: "bbb" }, { emailAddresses: [], phoneNumbers: [{ label: "unknown", phoneNumber: "XXX-XXXXXXX" }], givenName: "undefined", organizationName: "", familyName: "" }, { emailAddresses: [], phoneNumbers: [{ label: "unknown", phoneNumber: "XXX-XXXXXXX" }], givenName: "", organizationName: "Apple", familyName: "" }] }; contacts_callback(obj);
 <div id="demo"></div>

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM