2016-11-30 131 views
3

我想遍歷包含任務對象數組的對象。我將如何遍歷每個鍵值對,例如返回狀態爲「已完成」的所有任務。迭代對象的嵌套數組

{ 
    "quests": [ 
     { 
      "title": "A Rum Deal", 
      "status": "COMPLETED", 
      "difficulty": 2, 
      "members": true, 
      "questPoints": 2, 
      "userEligible": true 
     } 
    ], 
    "loggedIn": false 
} 
+0

迭代或返回? –

+0

我不認爲你想「遍歷每個關鍵值對」。你想遍歷數組中的**元素**。鍵/值對是對象的一個​​特徵;元素是數組的一個特性。順便說一下,即使你不知道單詞「過濾器」,谷歌搜索「查找匹配的對象數組javascript屬性」會馬上找到答案。 – 2016-11-30 09:04:55

回答

2

對於迭代,你可以使用Array#forEach

object.quests.forEach(function (a) { 
    if (a.status === "COMPLETED") { 
     // do something with the data 
    } 
}); 

回訪與完成任務的選擇,你可以使用Array#filter

var completed = object.quests.filter(function (a) { 
    return a.status === "COMPLETED"; 
}); 
1

使用Array.prototype.filter濾掉已經 '完成' 狀態的元素 - 見下面的演示:

var array={"quests":[{"title":"A Rum Deal","status":"COMPLETED","difficulty":2,"members":0,"questPoints":2,"userEligible":0},{"title":"A Rum Deal","status":"NOT_COMPLETED","difficulty":2,"members":0,"questPoints":2,"userEligible":0}],"loggedIn":1}; 
 

 
var result = array.quests.filter(function(e){ 
 
    return e.status && e.status === "COMPLETED"; 
 
}); 
 

 
console.log(result);
.as-console-wrapper{top:0;max-height:100%!important;}

+0

「e.status &&」部分的含義是什麼? – 2016-11-30 09:01:57

+0

檢查「狀態」是否爲「e」的屬性 – kukkuz

+1

這不是必需的。如果'status'不是'e'的屬性,那麼'e.status'將是未定義的,這不等於''COMPLETED''。 – 2016-11-30 09:03:57