javascript - JS数组重新一一组合?有点说不清,来看代码哈~
怪我咯
怪我咯 2017-04-11 11:10:43
[JavaScript讨论组]

例如,我有一个数组:

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

现在要的结果:

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

该如何实现?

怪我咯
怪我咯

走同样的路,发现不同的人生

全部回复(3)
PHPz
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;
        }
    }
PHPz
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,"二"]]
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号