2012-11-07 74 views
0

我有一個JavaScript JSON結果列表 - self.data.allOrganizationsList使用Javascript - 獲取從列表中的特定對象基於屬性值

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))。

但我可以做到不反覆的上述結果 - ()

var myvar = $.grep(response.permissionedOrganizations, function(v) { 
      return v.id === '40288170227c142201227eb56c5c000a'; 
     })[0]; 
console.log(myvar); 

顯示self.data.allOrganizationList

從$ .grept控制檯不確定的。我錯過了什麼。

+0

通過列表,你指的是一個* javascript數組*對象與你列出的屬性? – plesiv

+0

self.data.allOrganizationsList = $ .parseJSON(java對象的arraylist); –

回答

4

有了您的結構,你要$.grep篩選出正確的元素:

var arr = [ 
    {id: 1, value: 2}, 
    {id: 3, value: 4} 
]; 

$.grep(arr, function(v) { return v.id === 3; })[0]; // second element 

注這確實在幕後進行迭代 - 沒有辦法通過使用[key]表示法獲得正確的元素,因爲這不是如何定義您的結構。

+0

感謝您的回覆!在聲明[0]中代表? –

+0

@Sangram Anand:'$ .grep'返回與該函數匹配的所有元素的數組。在你的情況下,因爲你使用的是ID,所以總是1。所以你得到一個元素的數組。要獲取實際的對象,只需獲取該(第一個)元素。 – pimvdb

+0

獲取未定義的$ .grep()代碼。在帖子中添加了代碼。 –

0

如果它是一個數組,那麼它沒有被ID所控制,所以你需要遍歷每個項目並檢查id屬性,如上所述。

對於你能夠通過id來檢查它必須是這樣的:

var allOrganizationsList =  
    { 
     "id1": { 
      "memberCount": 1 
     }, 
     "id2": { 
      "memberCount": 2 
     } 
    }; 

allOrganizationsList["id1"].memberCount; 
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']可以返回結果數組。

2

jQuery.grep(數組,函數(elementOfArray,indexInArray),轉化])

查找滿足過濾器功能的數組的元素。原始數組不受影響。 check

+0

嘿謝謝..謝謝你讓我知道$ .grep(); –

相關問題