如何使用JavaScript/jQuery对数组或对象中的多个项进行索引?

Mat*_*t K 7 javascript arrays ajax jquery object

背景

我在Ajax调用返回的结果对象中有一个数据Array.数据如下所示:

{ Name="User1 Name1", FirstName="User1", Id="005400000001234567", more...}
{ Name="User2 Name1", FirstName="User2", Id="005400000001234568", more...}
Run Code Online (Sandbox Code Playgroud)

每个项目看起来像这样:

{
    Id:"005400000001234567",
    Name:"User Name",
    FirstName:"User",
    LastName:"Name",
    Title:"Manager"
}
Run Code Online (Sandbox Code Playgroud)

我希望能够通过Id(返回单个用户)或Title(返回用户数组)来检索数据.使用JavaScript jQuery 进行此操作的最佳方法是什么?

这是我到目前为止所做的尝试:

function GetAllUsers()
{
    AllUsersById = new Object();

    MyClass.MyAjaxMethod(function(result,event) {
        if(result) { 
            j$(result).each(function(index,item)
            {
                AllUsersById[item.Id] = item;
            });
        }
    });
}
Run Code Online (Sandbox Code Playgroud)

我上面的代码很适合用Id编制索引,但我不知道该怎么做Title.

额外细节

顺便说一下,大约有1000条记录,我需要这个记录才能相当高效.(这是我在文档准备就绪时立即获取数据的原因之一.但我不是JavaScript或jQuery效率方面的专家.如果你有更好的方法,请告诉我.)

有任何想法吗?提前致谢!

sin*_*tu1 5

好像你在寻找.grep().使用.grep你可以创建一个可以过滤的泛型函数:

function findInJson (json, key, value) {
    return $.grep(json, function (obj) {
        return obj[key] == value;
    });
}

// With your data getting a specific user by id
findInJson(yourJSON, "Id", "005400000001234567");

// Getting a set of users by title
findInJson(yourJSON, "Title", "Manager");
Run Code Online (Sandbox Code Playgroud)