Javascript压缩数组自动索引或命名

Javascript压缩数组自动索引或命名,javascript,functional-programming,underscore.js,lodash,Javascript,Functional Programming,Underscore.js,Lodash,如何压缩两个或多个数组,然后按名称而不是索引遍历每个元素?在Python中,可以执行以下操作: for A, B in zip(As, Bs): 但是,在Javascript中,我使用了如下内容: var As = [1,2,3]; var Bs = [4,5,6]; _(As) .zip(Bs) .map(function(x) { return {A:x[0], B:x[1]}; // I want x[0] and x[1] mapped to names. }) .map(f

如何压缩两个或多个数组,然后按名称而不是索引遍历每个元素?在Python中,可以执行以下操作:

for A, B in zip(As, Bs):
但是,在Javascript中,我使用了如下内容:

var As = [1,2,3];
var Bs = [4,5,6];
_(As)
.zip(Bs)
.map(function(x) { 
    return {A:x[0], B:x[1]}; // I want x[0] and x[1] mapped to names.
})
.map(function(x) {
    // Now I can use x.A and x.B.
    ...
在Javascript中有更好的方法来实现这一点吗?

您可以使用它将数组转换为对象:

_(zipped).map(function(values) {
    return _.object(['a', 'b'], values);
});

如果您愿意,也可以使用部分应用的功能

_(zipped).map(_.partial(_.object, ['a', 'b']));


您还可以扩展下划线来概括此行为,例如:

_.mixin({
  namedzip: function() {
    var zipped = _.zip.apply(null, _.initial(arguments, 1)),
        list = _.last(arguments);

    return _(zipped).map(function(values) {
        return _.object(list, values);
    });      
  }
});
你会打电话给我吗

_(As).namedzip(Bs, ['a', 'b']);

您的第一个示例并不比我正在做的更简洁,尽管它确实消除了索引。让我考虑一下扩展选项……我会给你提供这个问题的答案。这就是我最终实现的:
\.mixin({namelements:function(){var list=\.first(参数);var names=\.rest(参数);return{(list).map(函数(x){return}对象(name,x);})