有谁知道如何对phonegap从iOS解放到javascript的联系人数据进行排序。此刻的顺序与字母排序无关。我想按姓氏排序。
这是我的联系代码:
function init_contacts() {
var fields = [ "name","phoneNumbers"];
navigator.service.contacts.find(fields, contactSuccess, contactError, '');
}
function contactSuccess(contacts) {
for (n = 0; n < contacts.length; n++) {
if (contacts[n].phoneNumbers) {
for (m = 0; m < contacts[n].phoneNumbers.length; m++) {
addToMyContacts(contacts[n].name.formatted, contacts[n].phoneNumbers[m].value);
console.log('Found ' + contacts[n].name.formatted + ' ' + contacts[n].phoneNumbers[m].value);
}
}
}
$("#my_contacts").listview("refresh");
};
function contactError() {
navigator.notification.alerter('contactError!');
};
答案 0 :(得分:5)
您可以在Javascript中手动执行此操作。
var cSort = function(a, b) {
var aName = a.lastName + ' ' + a.firstName;
var bName = b.lastName + ' ' + b.firstName;
return aName < bName ? -1 : (aName == bName ? 0 : 1);
};
function contactSuccess(contacts) {
contacts = contacts.sort(cSort);
...
};
答案 1 :(得分:1)
要获得更有趣,更清晰的代码,您可以考虑使用lodash
contacts = _.sortBy(contacts, ['last_name', 'first_name']);
答案 2 :(得分:0)
在js中排序
function sortByitemName(a,b){
var x = a.displayName.toLowerCase();
var y = b.displayName.toLowerCase();
返回((x
function onSuccess(contacts) {
contacts.sort(sortByitemName);
}
答案 3 :(得分:0)
我正在使用这种方法,效率更高(与接受的答案相比)
var cSort=function(a,b){
var an=a.name.formatted.toUpperCase();
var bn=b.name.formatted.toUpperCase();
return (an<bn)?-1:(an==bn)?0:1;
};
function contactSuccess(contacts) {
contacts = contacts.sort(cSort);
...
};