2013-03-06 90 views
0

我有一個ko對象,它有一些屬性。我只需要ItemName屬性的值。過濾器對象並將屬性值分配給數組?

是否可以過濾此對象並獲取ItemName屬性值並將其推送到數組中。

items":[{"ItemID":1,"ItemName":"Asia","ItemLevel":0,"ItemParentID":0}, 
     {"ItemID":2,"ItemName":"Europe","ItemLevel":1,"ItemParentID":0}, 
     {"ItemID":3,"ItemName":"Africa","ItemLevel":2,"ItemParentID":0}] 

,使我們最終有以下幾點:

array[0] = "Asia" 
array[1] = "Europe" 
array[2] = "Africa" 

ko.utils.arrayFilter(items(), function(item) { 
      return item.ItemName(); 
     }); 

回答

2

使用arrayMap

items":[{"ItemID":1,"ItemName":"Asia","ItemLevel":0,"ItemParentID":0}, 
     {"ItemID":2,"ItemName":"Europe","ItemLevel":1,"ItemParentID":0}, 
     {"ItemID":3,"ItemName":"Africa","ItemLevel":2,"ItemParentID":0}] 

var array = ko.utils.arrayMap(items, function(item) { 
    return item.ItemName; 
}); 
1

您可以使用mapping plugin與包括映射只在您需要的字段複製:

var mapping = { 
    'include': ["ItemName""] 
} 
var viewModel = ko.mapping.fromJS(items, mapping); 
0

你寫了幾乎正確的代碼。只需將arrayFilter替換爲arrayMap即可:

ko.utils.arrayMap(items(), function(item) { 
      return item.ItemName(); 
     });