【问题标题】:How to order the contact alphabetically that are fetched from android device using phonegap?如何按字母顺序排列使用phonegap从android设备获取的联系人?
【发布时间】:2015-04-07 11:42:38
【问题描述】:

这是我从安卓设备获取联系人的代码:

function onDeviceReady() 
{
    var options = new ContactFindOptions();
    options.filter="";  
    options.multiple=true;
    var fields = ["*"];
    navigator.contacts.find(fields, onSuccess, onError, options);
}
function onSuccess(contacts) 
{
    alert('Total Contacts '+contacts.length);
    for (var i = 0; i < contacts.length; i++) 
    {
        if(contacts[i].phoneNumbers.length>0)
        {
            document.getElementById("demo").innerHTML+=contacts[i].displayName+"-"+ contacts[i].phoneNumbers[0].value+"<br/>";
        }
    }
}

我能够获取所有联系人,但我希望它们按字母顺序显示。请帮我。我也尝试了 options.sort 但它不起作用。

【问题讨论】:

    标签: javascript android cordova jquery-mobile


    【解决方案1】:

    假设返回的联系人变量是一个对象数组,并且您希望按 displayName 属性排序。

    创建比较函数:

    function compare(a,b) {
      if (a.displayName< b.displayName)
         return -1;
      if (a.displayName> b.displayName)
        return 1;
      return 0;
    }
    

    然后在迭代数组之前调用 sort() 传入您的比较函数:

    contacts.sort(compare);
    

    【讨论】:

    • 它有效,但它在保存在谷歌帐户中的联系人前面显示 null,比如说我有一个名为 Naira Rao 的联系人,然后它显示结果为“nullNaira Rao”.. 任何解决方案。?
    • @N.R,排序是添加空值还是已经在联系人对象中?
    • 以及这些参数将从哪里来比较函数 a 和 b?
    • @N.R 和 b 是正在比较的数组中的 2 个元素(这会自动发生):developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多