将数据从JSON数组复制到JS对象以进行jQuery自动完成

时间:2011-04-08 12:39:38

标签: javascript jquery json object autocomplete

我正在尝试使用jQuery中的Autocomplete插件,允许用户使用文本字段快速搜索某个人的姓名并返回他们的Facebook用户ID。 Facebook提供的JSON就是这样的:

{
   "data":[
      {
         "name":"Emma Alexander",
         "id":"8110855"
      },
      {
         "name":"Dave Suckow",
         "id":"19546358"
      },
      {
         "name":"Jessica Willits",
         "id":"45734687"
      }
   ]
}

但是,我想在本地进行搜索,而不是每次都检索Facebook JSON,所以我想我需要将所有的名称和ID复制到本地JavaScript对象中(我认为这是最好的方法)它?)然后使用jQuery来搜索这些名称。当用户从文本字段中选择一个名称时,它将调用另一个函数并将其传递给所选人员的Facebook ID。

但是,我不确定这是不是最好的方式,或者我是如何真正实现的。

如果有人可以提供几个小代码示例,特别是将数据从Facebook的JSON复制到本地Javascript对象然后搜索该对象,那将非常感谢! :)

非常感谢

3 个答案:

答案 0 :(得分:2)

嗯..你可以这样做......

var jsonval=
({
   "data":[
      {
         "name":"Emma Alexander",
         "id":"8110855"
      },
      {
         "name":"Dave Suckow",
         "id":"19546358"
      },
      {
         "name":"Jessica Willits",
         "id":"45734687"
      }
   ]
})


var name=new Array();
var id=new Array();
for(var i=0;i<jsonval.data.length;i++){
name.push(jsonval.data[i].name);
id.push(jsonval.data[i].id);

}

数组nameid将包含从JSON中获取的所有名称和ID,并且会创建新数组中的所有值...这就是一种方式......另一种方式是你可以保存变量jsonval中返回的JSON,然后每次使用用于将值推送到数组的for循环进行搜索...

答案 1 :(得分:0)

我认为你最好每次都调用fb json,因为搜索之间可能会发生变化。如果你在加载时调用了ajsx,你就可以在这样的开头设置一个var

  searchdata = "";

然后一旦你的ajax调用完成并且你得到你的json数据就把变量设置为dataresult bobs你的叔叔

searchdat = jsonresult;

有意义吗?

答案 2 :(得分:0)

未经测试,但以下函数采用搜索字符串和数据对象并在名称字段中搜索,并返回用户的id,如果未找到匹配项,则返回null。

function searchUser(search, data) {
    var matchedUser = null;
    $.each(data, function () {
        if (this.name.indexOf(search) !== -1) {
            matchedUser = this;
        }
    });
    return matchedUser && matchedUser.id;
}