2013-03-06 130 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(); 
     }); 
相关问题