JS:数组排列组合

JS:数组排列组合

  1. 原数组

    const source = [
      ['black', 'white', 'red', 'blue'],
      ['128GB', '256GB', '512GB'],
      ['zhengzhou', 'shenzhen', 'vietnam'],
    ]
    
  2. 方法

    let temp = []
    let results = []
    
    function combine(arr, index = 0) {
      arr[index].forEach(item => {
        temp[index] = item
    
        index + 1 < arr.length
          ? combine(arr, index + 1)
          : results.push(temp.slice())
      })
    }
    
  3. 执行

    combine(source)
    
    console.log(results)
    
  4. 输出

    [
      [ 'black', '128GB', 'zhengzhou' ],
      [ 'black', '128GB', 'shenzhen' ],
      [ 'black', '128GB', 'vietnam' ],
      [ 'black', '256GB', 'zhengzhou' ],
      [ 'black', '256GB', 'shenzhen' ],
      [ 'black', '256GB', 'vietnam' ],
      [ 'black', '512GB', 'zhengzhou' ],
      [ 'black', '512GB', 'shenzhen' ],
      [ 'black', '512GB', 'vietnam' ],
      [ 'white', '128GB', 'zhengzhou' ],
      [ 'white', '128GB', 'shenzhen' ],
      [ 'white', '128GB', 'vietnam' ],
      [ 'white', '256GB', 'zhengzhou' ],
      [ 'white', '256GB', 'shenzhen' ],
      [ 'white', '256GB', 'vietnam' ],
      [ 'white', '512GB', 'zhengzhou' ],
      [ 'white', '512GB', 'shenzhen' ],
      [ 'white', '512GB', 'vietnam' ],
      [ 'red', '128GB', 'zhengzhou' ],
      [ 'red', '128GB', 'shenzhen' ],
      [ 'red', '128GB', 'vietnam' ],
      [ 'red', '256GB', 'zhengzhou' ],
      [ 'red', '256GB', 'shenzhen' ],
      [ 'red', '256GB', 'vietnam' ],
      [ 'red', '512GB', 'zhengzhou' ],
      [ 'red', '512GB', 'vietnam' ],
      [ 'blue', '128GB', 'zhengzhou' ],
      [ 'blue', '128GB', 'shenzhen' ],
      [ 'blue', '128GB', 'vietnam' ],
      [ 'blue', '256GB', 'zhengzhou' ],
      [ 'blue', '256GB', 'shenzhen' ],
      [ 'blue', '256GB', 'vietnam' ],
      [ 'blue', '512GB', 'zhengzhou' ],
      [ 'blue', '512GB', 'shenzhen' ],
      [ 'blue', '512GB', 'vietnam' ]
    ]
    
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容