2015-04-05 30 views
1

我有JSON數組與子數組,我想循環它,並找到用戶的用戶名是否例如'管理'。如果是這樣,那麼創建JSON數組包含屬於用戶'admin'(地區,體育,城市等)的數據。我不知道如何在循環中找到它,然後切片。我很抱歉這個愚蠢的問題,但我有點失落。JavaScript的循環JSON數組和匹配在子數組中的字符串

這是JSON陣列結構我有什麼:

[ 
    { 
     "_id": "5520f52e2c0a22541541bde1", 
     "region": { 
      "_id": "551e6779d8f1afa01bd86529", 
      "name": "region_name" 
     }, 
     "user": { 
      "_id": "551a938af056a7fc099879c1", 
      "firstName": "John", 
      "lastName": "Boo", 
      "username": "admin", 
      "id": "551a938af056a7fc099879c1" 
     }, 
     "__v": 0, 
     "sport": [ 
      { 
       "_id": "551e69c6d8f1afa01bd86533", 
       "name": "Running" 
      } 
     ], 
     "city": "some_city", 
     "advert": "some_advert", 
     "title": "I want to run!", 
     "created": "2015-04-05T08:41:18.173Z" 
    }, 
    { 
     "_id": "552010740628cab002b3a700", 
     "region": { 
      "_id": "551e67b6d8f1afa01bd8652f", 
      "name": "region_name" 
     }, 
     "user": { 
      "_id": "551a938af056a7fc099879c1", 
      "firstName": "Bill", 
      "lastName": "Foo", 
      "username": "bill_foo", 
      "id": "551a938af056a7fc099879c1" 
     }, 
     "__v": 0, 
     "sport": [ 
      { 
       "_id": "551e5e01abb74a8423410b88", 
       "nazev": "Hockey" 
      } 
     ], 
     "city": "some_city", 
     "advert": "some_advert", 
     "title": "some_title", 
     "created": "2015-04-04T16:25:24.733Z" 
    } 
] 

編輯: 的用戶「管理員」預期的結果則是:

[ 
    { 
     "_id": "5520f52e2c0a22541541bde1", 
     "region": { 
      "_id": "551e6779d8f1afa01bd86529", 
      "name": "region_name" 
     }, 
     "user": { 
      "_id": "551a938af056a7fc099879c1", 
      "firstName": "John", 
      "lastName": "Boo", 
      "username": "admin", 
      "id": "551a938af056a7fc099879c1" 
     }, 
     "__v": 0, 
     "sport": [ 
      { 
       "_id": "551e69c6d8f1afa01bd86533", 
       "name": "Running" 
      } 
     ], 
     "city": "some_city", 
     "advert": "some_advert", 
     "title": "I want to run!", 
     "created": "2015-04-05T08:41:18.173Z" 
}] 
+0

請註明期望的輸出。 – thefourtheye 2015-04-05 09:50:02

+0

顯示一些代碼,你試過 – 2015-04-05 09:51:04

+0

使用jQuery。每個 等: [使用$ JSON數據jQuery的循環。每個] [1] [1]:HTTP://計算器.com/questions/2342371/jquery-loop-on-json-data-using-each – khodadadi 2015-04-05 10:00:10

回答

4

循環遍歷數組並拿出用戶名爲admin的用戶的項目:

var result = []; 
var nameToSearchFor = 'admin'; 

for(var index = 0; index < arr.length; index++) 
{ 
    var item = arr[index]; 
    if(item.user.username === nameToSearchFor) 
    { 
     result.push(item); 
    } 
} 
0

解決您的問題的一種方法是搜索駐留admin用戶名的索引。在你的情況是在提供的json數組的0索引。所以,你可以通過索引獲取整個對象,像這樣:

var i = 0; 
for(; i< json.length; i++){ 
    if(json[i].user.username === "admin") break; 
} 

有了,現在你可以獲取對象與admin數據。就像這樣:

json[i].user.firstName 

入住這花掉here

編輯 如果你想只是爲了得到該切片到一個新的數組那麼也許你可以切那塊JSON數組的,現在你有索引。

var newArray = json.slice(i, i+1); 
0

您可以使用一個開源項目,像jinqJs像查詢陣列上執行SQL。

var data = [ 
 
    { 
 
     "_id": "5520f52e2c0a22541541bde1", 
 
     "region": { 
 
      "_id": "551e6779d8f1afa01bd86529", 
 
      "name": "region_name" 
 
     }, 
 
     "user": { 
 
      "_id": "551a938af056a7fc099879c1", 
 
      "firstName": "John", 
 
      "lastName": "Boo", 
 
      "username": "admin", 
 
      "id": "551a938af056a7fc099879c1" 
 
     }, 
 
     "__v": 0, 
 
     "sport": [ 
 
      { 
 
       "_id": "551e69c6d8f1afa01bd86533", 
 
       "name": "Running" 
 
      } 
 
     ], 
 
     "city": "some_city", 
 
     "advert": "some_advert", 
 
     "title": "I want to run!", 
 
     "created": "2015-04-05T08:41:18.173Z" 
 
    }, 
 
    { 
 
     "_id": "552010740628cab002b3a700", 
 
     "region": { 
 
      "_id": "551e67b6d8f1afa01bd8652f", 
 
      "name": "region_name" 
 
     }, 
 
     "user": { 
 
      "_id": "551a938af056a7fc099879c1", 
 
      "firstName": "Bill", 
 
      "lastName": "Foo", 
 
      "username": "bill_foo", 
 
      "id": "551a938af056a7fc099879c1" 
 
     }, 
 
     "__v": 0, 
 
     "sport": [ 
 
      { 
 
       "_id": "551e5e01abb74a8423410b88", 
 
       "nazev": "Hockey" 
 
      } 
 
     ], 
 
     "city": "some_city", 
 
     "advert": "some_advert", 
 
     "title": "some_title", 
 
     "created": "2015-04-04T16:25:24.733Z" 
 
    } 
 
]; 
 

 
var result = jinqJs() 
 
       .from(data) 
 
       .where(function(row){return row.user.username==='admin';}) 
 
       .select(); 
 

 
document.body.innerHTML = '<pre>' + JSON.stringify(result, null, 4) + '</pre><br><br>';
<script src="https://rawgit.com/fordth/jinqJs/master/jinqjs.js"></script>

相關問題