2013-06-01 53 views
3

獲取值有什麼巧妙的方法從哈希數組中獲取值:如何通過鑰匙在Javascript

 
var foo = {a: "aFirst", b: "bFirst", c: "cFirst"}; 
var boo = {a: "aSecond", b: "bSecond", c: "cSecond"}; 
var bar = {a: "aThird", b: "bThird", c: "cThird"}; 
var myArrOfHashes = [foo, boo, bar]; 

所以,我希望是這樣的:

myArrOfHashes.map(b) // => bFirst, aSecond, aThird 
+1

對不起,但是這條線對我來說並不清楚('myArrOfHashes.map(b)// => bFirst,aSecond,aThird' )你能否詳細說明一下。 – yogi

回答

3

嗯,不太一樣,但你可以試試這個:

myArrOfHashes.map(function(hash){ return hash.b; }); 
+0

是的,地圖工作正常! –

+0

注意它只是ES5,這意味着沒有IE8,但有polyfills。 – elclanrs

+0

@DanMyasnikov如果您滿意,不要忘記接受答案。 –

1

這不是100%明確你想要什麼,但儘量

var map = function(key) { 
    return function(value) { 
    return value[key]; 
    }; 
}; 

console.log(myArrOfHashes.map(map('b'))); 
4

一個簡單的方法來做到這一點 - 和許多類似的事情 - 是Lo-DashUnderscore庫。

下面是來自Lo-Dash documentation一個例子:

var stooges = [ 
    { 'name': 'moe', 'age': 40 }, 
    { 'name': 'larry', 'age': 50 } 
]; 

_.pluck(stooges, 'name'); 
// → ['moe', 'larry'] 

即使你使用了這個特殊的問題採用不同的方法,你一定要看看這些庫。 (它們彼此非常相似;在兩者之間,我更喜歡Lo-Dash)

+0

感謝您提供一些框架,但我使用Sencha Touch –

+0

什麼是lo_dash?這是否是下劃線的冒犯? –

+0

@DanMyasnikov你可以同時使用兩者。下劃線是一個庫(非常好),而不是一個框架 –