组合两个具有不同数量元素的数组

时间:2015-11-29 08:46:55

标签: javascript arrays concatenation

我们假设我们有两个数组:

x = [1, 2, 3];
y = ['a', 'b'];

将它们组合起来并获得以下结果的最佳方法是什么:

newArray = ['1a', '1b', '2a', '2b', '3a', '3b'];

8 个答案:

答案 0 :(得分:3)

这是一种方法:

x.reduce(function(arr, x) {
  return arr.concat(y.map(function(y) {
    return x + y;
  }));
}, []);
//=> ["1a", "1b", "2a", "2b", "3a", "3b"]

答案 1 :(得分:1)

试试这个:



<div id="output"></div>
&#13;
localhost
&#13;
&#13;
&#13;

答案 2 :(得分:1)

试试这个..

var x = [1, 2, 3];
var y = ['a', 'b'];
var newarr = [];
for(var i=0;i<x.length;i++){
 for(var j=0;j<y.length;j++){
     newarr.push(x[i]+y[j]);
 }
}
//alert(newarr);

DEMO

答案 3 :(得分:1)

您可以简单地创建一个要返回的数组,并为包含数字的数组执行一个简单的循环。在该循环内部,您为数字组合(select * from vocabolario vo left join vocaboli_help voh on vo.id= voh.id where v.verbo=1 AND voh.usato=0 )创建另一个循环。使用第一个循环中的var b=0,e=comb.length;e>b;b++i),您可以使用for(var i=0,l=array.length;l>i;i++)a[i]位置处的组合数组推送数组(b) )(在第一个循环内部的循环内部)到新数组。最后,返回新数组。

c[b]

干净!这样做是为了使用:

function CombineExample(a,c){
    var New=[];
    for(var i=0,l=a.length;l>i;i++){
        for(var b=0,e=c.length;e>b;b++){
             New.push(a[i]+c[b])
        }
    }
    return New
}

答案 4 :(得分:1)

如果支持箭头功能,您可以获得所需的结果:

[].concat.apply([],
    x.map(x => y.map(y => x+y))
);

如果没有,你必须像这样写

[].concat.apply([],
    x.map(function(x) { return y.map(function(y) {return x+y })})
);

<强>解释

中间线产生以下结果:

[ ["1a", "1b"], ["2a", "2b"], ["3a", "3b"] ]

然后Array.prototype.concat方法用于连接内部数组。

答案 5 :(得分:0)

使用嵌套循环迭代参与数组的所有元素。在内部循环中填充新的数组元素:

var x = [1, 2, 3];
var y = ['a', 'b'];

var newArray = [];
x.forEach(function(xItem) {
  y.forEach(function(yItem) {
    newArray.push(xItem.toString().concat(yItem));
  });
});

console.log(newArray);

答案 6 :(得分:0)

最简单的方法:

var x = [1, 2, 3];
var y = ['a', 'b'];
var output = [];

for (var i = 0; i < x.length; i++) {
  for (var j = 0; j < y.length; j++) {
    output.push(x[i]+y[j]);
  }
}
document.getElementById('output').innerHTML = JSON.stringify(output);

请注意,如果两个数组都是数字,这实际上会添加数字,而不是连接。您需要进行一些字符串转换。

答案 7 :(得分:0)

var x = [1, 2, 3];
var y = ['a', 'b'];
var z = [];
for(var i=0;i<x.length;i++){
    for(var j=0;j<y.length;j++){
        z.push(x[i]+y[j]);
    }
}

你是否真的要求这个?