2015-08-30 86 views
0

我有對象的數組如下:如何從對象數組的屬性返回數組

var lanes = [ 
{ 
"name" : "Breakfast Special", 
"className" : "breakfast-special", 
"sales" : 200, 
"redemptions" : 137 
}, 
{ 
"name" : "Free Danish", 
"className" : "free-danish", 
"sales" : 300, 
"redemptions" : 237 
}, 
{ 
"name" : "Half Price Coffee", 
"className" : "half-price-coffee", 
"sales" : 240, 
"redemptions" : 37 
}]; 

我想創建一個包含存儲「贖回」只是數值數組。我可以訪問的值爲:

lanes[0].redemptions; 

通過使用循環遍歷每個對象,但我正在尋找一些有效的方法來做到這一點。

這個我試過使用地圖功能如下:

var arrayRedemptions = lanes.map(function() {return this.redemptions}); 

但它不工作。任何幫助,將不勝感激。

+0

這些都是對象常量,不「JSON對象」。這是一個相當普遍的誤解(http://benalman.com/news/2010/03/theres-no-such-thing-as-a-json/)。 –

回答

2

你很接近。

使用

var arrayRedemptions = lanes.map(function(obj) { 
    return obj.redemptions 
}); 
+0

它不工作,它正在分解我的代碼。 – akifquddus

+0

@ user3130733,它的破壞代碼如何查看http://jsfiddle.net/jLarLc63/ – Satpal

+0

明白了,錯誤是,我在數組中有一些空的對象。固定它像這樣:var arrayRedemptions = lanes.map(函數(OBJ){ \t \t如果(OBJ){ \t \t \t返回obj.redemptions; \t \t}否則{ \t \t \t返回-1; \t \t} \t}); – akifquddus

2

耶。地圖裏面,你可以使用這些PARAMS(每個項目,指標,陣列

var arrayRedemptions = lanes.map(function (item, index, array) { 
    return item ? item.redemptions : -1; 
}); 
0

只需添加額外的檢查尤其是同時具有自動生成的內容的工作後:

var arrayRedemptions = array.map(function(obj) { 
    if (obj) 
     return obj.redemptions; 
    else 
     return -1; 
});