var map=[
["12_0","12_1"],
["13_0","13_1","13_2"],
["14_0","14_1","14_2"]
];
一个二维数组里面,现在需要使数组中的三个数组里的值分别连接起来
实例:["12_0-13_0-14_0","12_1-13_1_14_1"]
同组的不能连接,只能跟其他的连。
var map=[
["12_0","12_1"],
["13_0","13_1","13_2"],
["14_0","14_1","14_2"]
];
一个二维数组里面,现在需要使数组中的三个数组里的值分别连接起来
实例:["12_0-13_0-14_0","12_1-13_1_14_1"]
同组的不能连接,只能跟其他的连。
先转置,再连接
var map=[
["12_0","12_1"],
["13_0","13_1","13_2"],
["14_0","14_1","14_2"]
]
// 二维数组转置
var arr = []
for (var i = 0; i < map.length; i++) {
arr[i] = []
}
for (var j = 0; j < map.length; j++) {
for (var k = 0; k < map[j].length; k++) {
arr[k][j] = map[j][k]
}
}
// 连接
for (var a of arr) {
var str = a.join('-')
console.log(str)
}
var map=[
["12_0","12_1"],
["13_0","13_1","13_2"],
["14_0","14_1","14_2"]
];
var myarr = [];
for(i in map){
myarr.push([]);
}
aaa(map);
function aaa(arr){
arr.map((s,i)=>{
if(Array.isArray(s)){
return aaa(s);
}
myarr[i].push(s);
});
}
for(i in myarr){
myarr[i] = myarr[i].join('-');
}
console.log(myarr);
这个问题虽然显示已经解决了,不过我也提下自己的方案吧。
我是用递归的方式来把map中每一项都拿到,这样就跟map数组的长度没关系了,任意长度的数组都能获取到所有的组合:
var map=[
["12_0","12_1"],
["13_0","13_1","13_2"],
["14_0","14_1","14_2"]
]
function getMapResult(params){
// 递归方法
let ss = (_params, step)=>{
let item = _params[step],
result = [],
res = [];
if( step<_params.length-1 ){
res = ss(_params, ++step);
}
item.map(val=>{
if(res.length){
res.forEach(_=>{
result.push( val+'-'+_ );
})
}else{
result.push( val );
}
})
return result;
}
return ss(params, 0);
}
console.log( getMapResult(map) );
getMapResult
方法中传入的参数,可以是任意长度的二维数组,如:
var arr = [
[1, 2, 3, 4],
[5],
[6,7,8],
[9, 10, 11, 12],
[14, 15]
];
console.log( getMapResult(arr) ); // 输出96种所的可能
还有一种就是循环的方式:
function getMapResult(params){
let result = [];
params.map(item=>{
let ss = [];
item.map(_=>{
if(result.length){
result.map(i=>ss.push(i+'-'+_));
}else{
ss.push(_);
}
})
result = ss;
})
return result;
}
执行:
var arr = [
[1, 2, 3, 4],
[5],
[6,7,8],
[9, 10, 11, 12],
[14, 15]
]
getMapResult(arr);
10 回答11.1k 阅读
6 回答3k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.7k 阅读✓ 已解决
3 回答2.3k 阅读✓ 已解决
3 回答2.1k 阅读✓ 已解决
看你的结果,是将子数组对应下标的连接起来,有空缺则全部丢弃?
最短的子数组长度为n,则结果数组长度为n ?
如果是这样的话: