2013-05-13 99 views
0

所以我有一个数组JSON的myarr[]形式对象:{ "a":"", "b":"" }操纵JSON数据集

是否有获得B的阵列有效的方法:

[ myarr[0].b, myarr[1].b, myarr[2].b, ... ]

还是我必须要手动迭代通过myarr来构建数组b?

+0

您将不得不遍历数组,但是有帮助函数可以简化使用。 – Bergi 2013-05-13 18:54:27

+0

@Bergi那些帮手是什么? – HPWD 2014-02-27 18:19:31

+0

@dlackey:[pluck](http://underscorejs.org/#pluck)例如在答案中建议(并重新实施)。 – Bergi 2014-02-27 18:21:43

回答

1

为什么不能有乐趣的原型和扩展阵列,以获得一个方便的和可重复使用的功能:

Array.prototype.pluck = function(key) { 
    var i = this.length, 
     plucked = []; 
    while(i --) { 
     plucked[i] = this[i][key] || "" 
    } 

    return plucked; 
} 

有了这一个,你可以这样做:

collection.pluck(keyName) 

要拿回你想要的结果。点击这里查看工作演示:http://jsfiddle.net/jYrNN/1/

+0

为什么'|| “”'?只要让结果成为“未定义”即可。 – Bergi 2014-02-27 18:22:25

2

查看underscore.js库。

我建议检查pluck的实施。

什么你想要做的实际上是:_.pluck(myarr, 'b')

-1

jQuery也提供API来解析JSON

$.each(myarr, function(key,value) 
    { 
    alert(key); 
    alert(value); 
    }); 
+0

他也不需要解析JSON,也不使用该方法。 – Bergi 2013-05-13 18:53:22

1
var b_arr = $.map(myarr, function(val, i) { return val.b; }); 

FIDDLE

或wihtout jQuery的

var b_arr = myarr.map(function(val) { return val.b }) 
       .filter(function(n){return n || false}); 
+1

OP不使用jQuery,所以本地方法可能更合适 – Bergi 2013-05-13 18:55:52