对不起,如果重复,但我找不到合适的答案。我有两个数组:
array1 = { '0': 'f1', '1': 'f2'};
array2 = { '0': 's1', '1': 's2'};
如何组合(合并)这两个数组来得到这样的结果:
array3 = [['f1', 's1'], ['f2', 's2']];
谢谢!
答案 0 :(得分:3)
如果您的输入是数组
var a = ['f1', 'f2'];
var b = ['s1', 's2'];
您正在寻找的转型是zip
var zip = (xs,ys)=>
xs.reduce((zs,x,i)=>
zs.concat([[x, ys[i]]]), []);
zip(a,b);
//=> [['f1', 's1'], ['f2', 's2']]
这假设两个输入的长度相同。
如果您的输入是带有数字键的对象
var a = {'0': 'f1', '1': 'f2'};
var b = {'0': 's1', '1': 's2'};
var zipObj = (xs,ys)=>
Object.keys(xs).reduce((zs,xk)=>
zs.concat([[xs[xk], ys[xk]]]), []);
zipObj(a,b);
//=> [['f1', 's1'], ['f2', 's2']]
尽管你没有要求它,但是要求Trey我已经包含 ES5 版本的功能
"use strict";
// zip arrays
var zip = (xs,ys)=>
xs.reduce((zs,x,i)=>
zs.concat([[x, ys[i]]]), []);
// zip objects
var zipObj = (xs,ys)=>
Object.keys(xs).reduce((zs,xk)=>
zs.concat([[xs[xk], ys[xk]]]), []);
答案 1 :(得分:0)
假设您在问题中意外添加了索引并且没有使用其他一些数据类型...最简单的方法是我想象的for循环:
var newArray = [];
for(var i in array1){
newArray[i] = [array1[i], array2[i]];
}
编辑:这将适用于长度相等的对象或数组。
答案 2 :(得分:0)
如果您确定两个阵列的长度相等,请使用Trey的解决方案。否则,请使用:
config.vm.define "centos6", autostart: false , primary: false do |centos6|