js N个数组的所有组合实现?

不确定个数的数组,要求出所有的组合值

let arr=[['白色','红色','黑色'],['大','中','小'],['10cm'].....]

结果:

["白色,大,10cm","白色,中,100cm","白色,小,10cm","红色,大,10cm"....]

结果一定是按第一个数组按在最前的顺度,先拿到所以“白色”的组合,再去拿“红色”,再拿“黑色”,有人有思路吗??

阅读 5.2k
3 个回答
function combination(arr) {
    return arr.reduce((pre, cur) => {
          let res = [];
        pre.forEach(_pre => {
            cur.forEach(_cur => {
                res.push(_pre.concat([_cur]));
            })
        })
        return res;
    }, [[]])
}
let arr = [['白色', '红色', '黑色'],['大', '中', '小'],['10cm']]
    results = [];
    result = [];
    doExchange(arr, 0);
    function doExchange(arr, index){
        for (var i = 0; i<arr[index].length; i++) {
            result[index] = arr[index][i];
            if (index != arr.length - 1) {
                doExchange(arr, index + 1)
            } else {
                results.push(result.join(','))
            }
        }
    }
  console.log(results)
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题