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

Javascript Zipped Arrays Automatically Indexed or Named

本文关键字:索引 压缩 数组 Javascript      更新时间:2023-09-26

如何压缩两个或多个数组,然后按名称而不是按索引遍历每个元素?在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中有更好的方法来做到这一点吗?

您可以使用_.object将数组转换为对象:

_(zipped).map(function(values) {
    return _.object(['a', 'b'], values);
});
http://jsfiddle.net/1quhesmq/

或者使用部分应用的函数,如果您喜欢

_(zipped).map(_.partial(_.object, ['a', 'b']));
http://jsfiddle.net/1quhesmq/6/


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

_.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']);
http://jsfiddle.net/1quhesmq/5/