我正在尝试使用组合创建多个数组。
这是我的数组的样子:
GMSMapView
我尝试过一个看起来像这样的代码:
var a1 = ["1", "2", "3"];
var a2 = ["a", "b"];
var a3 = ["q", "w", "e"];
var a4 = [a1, a2, a3];
这为我提供了正确的组合,它看起来像这样:
function allPossibleCases(a4) {
if (arr.length == 1) {
return arr[0];
} else {
var result = [];
var allCasesOfRest = allPossibleCases(arr.slice(1)); // recur with the rest of array
for (var i = 0; i < allCasesOfRest.length; i++) {
for (var j = 0; j < arr[0].length; j++) {
// console.log(arr[0][j]);
// console.log(allCasesOfRest[i]);
result.push(arr[0][j] + allCasesOfRest[i]);
}
}
return result;
}
}
但我希望(期望输出)它是这样的:
Array (18)
0 "1aq"
1 "2aq"
2 "3aq"
3 "1bq"
4 "2bq"
5 "3bq"
6 "1aw"
7 "2aw"
8 "3aw"
9 "1bw"
10 "2bw"
11 "3bw"
12 "1ae"
13 "2ae"
14 "3ae"
15 "1be"
16 "2be"
17 "3be"
基本上我想要实现的是组合数组而不是字符串。
答案 0 :(得分:2)
只是连结而不是+
:
result.push([a4[0][j]].concat(allCasesOfRest[i]));
得到你想要的东西。你有一个字符串和一个你想要放在一起的数组 - 为此你可以将字符串放在一个数组中,然后用你得到的第二个数组连接该数组。
var a1 = ["1", "2", "3"];
var a2 = ["a", "b"];
var a3 = ["q", "w", "e"];
var a4 = [a1, a2, a3];
function allPossibleCases(a4) {
if (a4.length == 1) return a4[0];
var result = [];
var allCasesOfRest = allPossibleCases(a4.slice(1)); // recur with the rest of array
for (var i = 0; i < allCasesOfRest.length; i++) {
for (var j = 0; j < a4[0].length; j++) {
result.push([a4[0][j]].concat(allCasesOfRest[i]));
}
}
return result;
}
console.log(allPossibleCases(a4));
&#13;