par*_*ent 46 javascript underscore.js
我一直在浏览下划线文档,但我似乎无法找到一个方法(或嵌套方法调用)来执行以下转换:
假设我有以下Javascript数组:
[{ "name" : "sEcho", "value" : 1},{ "name" : "iColumns", "value" : 12}, ... ]
Run Code Online (Sandbox Code Playgroud)
我需要将其转换为以下对象:
{
sEcho: 1,
iColumns: 12,
...
}
Run Code Online (Sandbox Code Playgroud)
我使用underscore.js是有原因的,所以它必须是一个班轮.
Joh*_*rak 58
Sza答案的变化,使用"对数组"签名_.object:
_.object(_.map(data, function(x){return [x.name, x.value]}))
Run Code Online (Sandbox Code Playgroud)
Bra*_*her 52
由于没有人发布这个作为答案,我发布它是因为我认为它比Jan的答案更好.没有内联功能,它更短,更清洁.
_.object(_.pluck(data, 'name'), _.pluck(data, 'value'));
Run Code Online (Sandbox Code Playgroud)
Esa*_*ija 27
这应该这样做:
_.reduce(array, function(o, v){
o[v.name] = v.value;
return o;
}, {});
Run Code Online (Sandbox Code Playgroud)
作为一个单行(你在开玩笑吧,对吗?):
_.reduce(array,function(a,b){a[b.name]=b.value;return a},{});
Run Code Online (Sandbox Code Playgroud)
假设您有以下JavaScript数组:
var list = [
{
name: "sEcho",
value: 1
},
{
name: "iColumns",
value: 12
},
...
];
Run Code Online (Sandbox Code Playgroud)
您可以将其转换为您想要的格式,如下所示:
var table = _.reduce(list, function (table, item) {
table[item.name] = item.value;
return table;
}, {});
Run Code Online (Sandbox Code Playgroud)
它不是一个单行,但我不认为你的字面意思是单行.你是否?
如果你真的想要一个班轮,那么这是一个班轮:
var t = _.reduce(list, function (t, i) { return t[i.name] = i.value, t; }, {});
Run Code Online (Sandbox Code Playgroud)
是的,其他人提供了相同的答案.然而,这只是因为你的问题的答案是如此简单.
var names = _.pluck(data, 'name');
var values = _.pluck(data, 'value');
var result = _.object(_.zip(names, values));
console.log(result);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
61224 次 |
| 最近记录: |