我有一个javascript json结果列表 - self.data.allOrganizationsList
self.data.allOrganizationsList包含其属性为
的组织列表customentityaccess, id, isLabsAccessAllowed, memberCount, organizationname, organizationwebsite
我想访问具有的组织对象 id = 402881702121fec10121520080930001
我试图从下面的语句中得到这个,但由于列表中的每个项目都是一个对象,我无法得到所需的结果。
self.data.allOrganizationsList.id['402881702121fec10121520080930001']`
//(or)
self.data.allOrganizationsList["id"]['402881702121fec10121520080930001']
其他替代方法是使用$ .each(self.data.allOrganizationList,function(index,item))。
但是我可以在不迭代 - self.data.allOrganizationList
的情况下实现上述结果来自$ .grept()
var myvar = $.grep(response.permissionedOrganizations, function(v) {
return v.id === '40288170227c142201227eb56c5c000a';
})[0];
console.log(myvar);
在控制台中显示未定义。我错过了什么。
答案 0 :(得分:4)
根据您的结构,您希望$.grep
过滤掉正确的元素:
var arr = [
{id: 1, value: 2},
{id: 3, value: 4}
];
$.grep(arr, function(v) { return v.id === 3; })[0]; // second element
请注意,这会在幕后进行迭代 - 没有办法通过使用[key]
表示法来获取正确的元素,因为这不是您的结构的定义方式。
答案 1 :(得分:2)
jQuery.grep(array,function(elementOfArray,indexInArray)[,invert])
查找满足过滤函数的数组元素。原始数组不受影响。 check
答案 2 :(得分:0)
如果它是一个数组,那么它不会被id键入,所以你需要遍历每个项目并检查id属性,如上所述。
为了能够通过id检查,它必须是:
var allOrganizationsList =
{
"id1": {
"memberCount": 1
},
"id2": {
"memberCount": 2
}
};
allOrganizationsList["id1"].memberCount;
答案 3 :(得分:0)
如果您需要根据值搜索多个对象,您只需迭代列表一次:
for (var i in list) {
var id = list[i].id;
my_table[id] = list[i]; // for unique ids
}
对于非唯一ID,将my_table
作为数组的关联数组:
if (!my_table[id]) my_table[id] = [list[i]];
else my_table[id].push(list[i]);
在后一种情况下,my_table ['12399123']可以返回一个结果数组。