ios上的Phonegap联系排序顺序

时间:2011-07-10 04:17:24

标签: ios cordova

有谁知道如何对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!');
};

4 个答案:

答案 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 y)≤1:0));     }

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);
  ...
};
  1. Contact.name.formatted跨平台更加一致
  2. 所有以相同字母开头的名字都会被分组在一起,无论情况如何。 (你也可以试试看)。