2015-08-30 85 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; 
});