2013-05-13 104 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