【问题标题】:Search and filter JSON list of friends returned by facebook搜索和过滤 facebook 返回的好友 JSON 列表
【发布时间】:2013-01-15 06:39:47
【问题描述】:

我正在尝试结交已登录 Facebook 用户的朋友。我使用 fql,我想为在搜索框中输入的每个字母更新列表。我正在 fql 中进行此操作,并且可以正常工作。

我碰巧读到最好一次读取所有朋友,然后搜索 JSON 对象。

对于一个数组

[{"uid":"1235","name":"user1_abcde","picture":"picurl"},
 {"uid":"1237","name":"user2_abcde","picture":"picur2"},
 {"uid":"1289","name":"user3_agere","picture":"picur3"}
]

如何排序,以在数组中获取搜索字符串(例如:“de”)部分匹配的名称字段以返回的结果

 [{"uid":"1235","name":"user1_abcde","picture":"picurl"},
   {"uid":"1237","name":"user2_abcde","picture":"picur2"}
  ]

谢谢

【问题讨论】:

    标签: jquery json search


    【解决方案1】:

    首先你需要解析json,然后使用正则表达式搜索。

    function search(json, regex) {
        var result = [];
        $.each(JSON.parse(json), function(i, row) {
           if (row.name.match(regex)) {
              result.push(row);
           }
        });
        return result;
    }
    

    您可以使用该功能通过search(json, /de/)搜索de

    【讨论】:

    • 如果 OP 只需要匹配子字符串,IMO 正则表达式有点矫枉过正。
    • @jcubic 你能提示一下如何为此编写正则表达式吗?
    • @aVC for de /de/ 如果你要搜索的内容以 de 结尾,你可以使用 /de$/
    • @pawel 正则表达式很棒,因为他将来可以做更复杂的事情,"de" 只是一个例子。正则表达式更通用,
    • @aVC 如果您有一个字符串(例如,用户输入)并且需要使用正则表达式查找匹配元素,您首先需要从字符串构造一个正则表达式,即regex = new RegExp( string );
    【解决方案2】:
    var searchFriend = function( str ){
        /* make search case-insensitive */
        str = str.toLowerCase();
        /* assuming `friendsArray` is your cached JSON response */
        return friendsArray.filter( 
            function( i ){ return (i['name'].toLowerCase().indexOf( str ) > -1) }
        );
    }
    

    Array.filter at MDN

    【讨论】:

      猜你喜欢
      • 2012-04-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多