2012-04-26 41 views
0

有改造這個更快的方法:無需手動循環和填充對象如何轉變的JSON值成密鑰

{ 
    name1: value1, 
    name2: value2, 
    name3: value3, 
    ... 
} 

[ 
    { name: 'name1', value: 'value1' }, 
    { name: 'name2', value: 'value2' }, 
    { name: 'name3', value: 'value3' }, 
    ... 
] 

到這個? 可以下劃線庫有辦法做到這一點?它已經在我們的應用程序中,所以它可以使用,而無需額外的費用 。

目前我有一個手動操作, 雖然我不知道這是我可以擁有的最佳性能。

var data = [];  // see the array above 
    var result = {}; 
    for(var i = 0; i < data.length; i++) 
    { 
     var o = data[i]; 
     result[o.name] = o.value; 
    } 

回答

1

我不認爲有更快的方法。隨着下劃線有一個較短的方式,但它幾乎肯定比你的循環慢:

var result = _.reduce(data, function(r,o) { r[o.name] = o.value; return r; }, {}); 
+0

我不停的for循環,因爲它是更好的性能 和下劃線方法並沒有真正使其成爲mutch短反正。但感謝給我的方式做下劃線。我一直使用下劃線方法學習新的用例! – Sander 2012-05-08 09:40:24

+0

是的,Underscore的不錯。但JS對於這種編程風格非常冗長。我想這就是爲什麼有CoffeScript ... – 2012-05-08 18:55:59