如何压缩两个或多个数组,然后按名称而不是按索引迭代每个元素?在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);
});
或者如果您愿意,可以使用部分应用的函数
_(zipped).map(_.partial(_.object, ['a', 'b']));
http://jsfiddle.net/1quhesmq/6/
<小时/>您还可以扩展 Underscore 来概括此行为,例如:
_.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']);
关于Javascript 压缩数组自动索引或命名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25329717/