Javascript压缩数组自动索引或命名
如何压缩两个或多个数组,然后按名称而不是索引遍历每个元素?在Python中,可以执行以下操作: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
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);})代码>