JS数组重新一一组合?有点说不清,来看代码哈~

例如,我有一个数组:

[
  [a, b],
  [1, 2],
  [一, 二]
]

现在要的结果:

[
  [a, 1, 一],
  [a, 1, 二],
  [a, 2, 一],
  [a, 2, 二],
  [b, 1, 一],
  [b, 1, 二],
  [b, 2, 一],
  [b, 2, 二]
]

该如何实现?

阅读 2.9k
3 个回答
function doSomething(arr) {
        var len = arr.length;
        if (len >= 2) {
            var len1 = arr[0].length;
            var len2 = arr[1].length;
            var newlen = len1 * len2;
            var temp = new Array(newlen);
            var index = 0;
            for (var i = 0; i < len1; i++) {
                for (var j = 0; j < len2; j++) {
                    temp[index] = (arr[0][i] + ',' +
                        arr[1][j]).split(',');
                    index++;
                }
            }
            var newArray = new Array(len - 1);
            for (var i = 2; i < len; i++) {
                newArray[i - 1] = arr[i];
            }
            newArray[0] = temp;
            return doSomething(newArray);
        } else {
            return arr;
        }
    }
let res=[];
    let k=0;
for(let i in a){
    for (let j in a[i]){
    res[k].push(a[i][j]);
    k++;    
    }
}
var data = [
    ['a', 'b'],
    [1, 2],
    ['一', '二']
]

function combineData(cur, index) {
    if (index >= data.length) {
        return [cur]
    }
    var value = data[index];
    return value.reduce(function(r, v) {
        var row = [].concat(cur);
        row.push(v);
        return r.concat(combineData(row, index + 1))
    }, [])
}


console.log(JSON.stringify(combineData([], 0)))
[["a",1,"一"],["a",1,"二"],["a",2,"一"],["a",2,"二"],["b",1,"一"],["b",1,"二"],["b",2,"一"],["b",2,"二"]]
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题