2012-04-26 40 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