组合两个具有不同数量元素的数组
Combining two arrays with different number of elements
假设我们有这两个数组:
x = [1, 2, 3];
y = ['a', 'b'];
将它们结合起来并得到以下结果的最佳方法是什么:
newArray = ['1a', '1b', '2a', '2b', '3a', '3b'];
这是一种方法:
x.reduce(function(arr, x) {
return arr.concat(y.map(function(y) {
return x + y;
}));
}, []);
//=> ["1a", "1b", "2a", "2b", "3a", "3b"]
使用嵌套循环迭代参与数组的所有元素。在内部循环中填充新的数组元素:
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);
最简单的方法:
var x = ["a", "b", "c"];
var y = [1, 2, 3];
var newArray = [];
var i = 0;
for (;i < x.length;++i) {
var j = 0;
for (;j < y.length;++j) {
newArray.push(x[i] + y[j]);
}
}
;
请注意,如果两个数组都是数字,这将实际添加数字,而不是连接。您需要进行一些字符串转换。
试试这个:
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);
<div id="output"></div>
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]);
}
}
你是认真要求的吗?
试试这个..
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);
您可以简单地创建一个要 returned 的数组,并对包含数字的数组执行一个简单的循环。在该循环内,您为数字 (var b=0,e=comb.length;e>b;b++
) 的组合数组创建另一个循环。使用第一个循环 (for(var i=0,l=array.length;l>i;i++)
) 中的 i
,将数组 (a[i]
) 与位置 b
(c[b]
处的组合数组一起推送) (在第一个循环内的循环内)到新数组。最后,return新数组。
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
}
干净!这样做是为了使用:
CombineExample([1,2,3],['a','b'])
/* returns ["1a", "1b", "2a", "2b", "3a", "3b"] */
如果支持箭头函数,您将获得如下所需的结果:
[].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
方法用于连接内部数组。
假设我们有这两个数组:
x = [1, 2, 3];
y = ['a', 'b'];
将它们结合起来并得到以下结果的最佳方法是什么:
newArray = ['1a', '1b', '2a', '2b', '3a', '3b'];
这是一种方法:
x.reduce(function(arr, x) {
return arr.concat(y.map(function(y) {
return x + y;
}));
}, []);
//=> ["1a", "1b", "2a", "2b", "3a", "3b"]
使用嵌套循环迭代参与数组的所有元素。在内部循环中填充新的数组元素:
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);
最简单的方法:
var x = ["a", "b", "c"];
var y = [1, 2, 3];
var newArray = [];
var i = 0;
for (;i < x.length;++i) {
var j = 0;
for (;j < y.length;++j) {
newArray.push(x[i] + y[j]);
}
}
;
请注意,如果两个数组都是数字,这将实际添加数字,而不是连接。您需要进行一些字符串转换。
试试这个:
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);
<div id="output"></div>
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]);
}
}
你是认真要求的吗?
试试这个..
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);
您可以简单地创建一个要 returned 的数组,并对包含数字的数组执行一个简单的循环。在该循环内,您为数字 (var b=0,e=comb.length;e>b;b++
) 的组合数组创建另一个循环。使用第一个循环 (for(var i=0,l=array.length;l>i;i++)
) 中的 i
,将数组 (a[i]
) 与位置 b
(c[b]
处的组合数组一起推送) (在第一个循环内的循环内)到新数组。最后,return新数组。
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
}
干净!这样做是为了使用:
CombineExample([1,2,3],['a','b'])
/* returns ["1a", "1b", "2a", "2b", "3a", "3b"] */
如果支持箭头函数,您将获得如下所需的结果:
[].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
方法用于连接内部数组。