Javascript 展平此阵列的简单方法?

Javascript 展平此阵列的简单方法?,javascript,jquery,underscore.js,Javascript,Jquery,Underscore.js,我有这个阵列: [{name: 'email',value: 'a@b.com'}, {name: 'phone',value: '123-123-1234'}] 我需要把它变成这样: {email: 'a@b.com', phone: '123-123-1234'} 我该怎么做?我想我可以用一百万个迭代器来完成这项工作,但我想也许有一种更干净的方法来完成这项工作 如果有帮助的话,我会使用下划线和jQuery。有几种方法可以完成这项任务 一种是使用: 正如在评论和其他答案中所指出的,或者简单

我有这个阵列:

[{name: 'email',value: 'a@b.com'}, {name: 'phone',value: '123-123-1234'}]
我需要把它变成这样:

{email: 'a@b.com', phone: '123-123-1234'}
我该怎么做?我想我可以用一百万个迭代器来完成这项工作,但我想也许有一种更干净的方法来完成这项工作


如果有帮助的话,我会使用下划线和jQuery。

有几种方法可以完成这项任务

一种是使用:


正如在评论和其他答案中所指出的,或者简单的for循环也可以完成工作。

下划线JS非常棒,您可以使用
\uuz.map
。请参阅下面的代码:

var existingObject = [{name: 'email',value: 'a@b.com'}, {name: 'phone',value: '123-123-1234'}];
var selectedObject = _.map(existingObject, function(obj) {
    var retObj = { };
    retObj[obj["name"]] = obj["value"];
    return retObj;
});

console.log(selectedObject);
对于这种类型的操作来说,它非常整洁:

var items = [{name: 'email',value: 'a@b.com'}, {name: 'phone',value: '123-123-1234'}]

var data = items.reduce(function (result, item) {
    result[item.name] = item.value;

    return result;
}, {});

由于要将数组转换为对象,因此必须以某种方式进行交互
$.map
可以将对象转换为数组,但反过来不行。这不是唯一的方法,您可以使用
数组。prototype.reduce
reduce优于map,在这个答案中使用map没有任何意义。它被视为一个each循环。(是的,我知道这是一个2年多的问题/答案)我认为这是解决这个问题最优雅、最简单的方法。
var items = [{name: 'email',value: 'a@b.com'}, {name: 'phone',value: '123-123-1234'}]

var data = items.reduce(function (result, item) {
    result[item.name] = item.value;

    return result;
}, {});