从N个数字中生成指定长度并且不重复的最多组合

var list = [1, 2, 4, 10, 11, 19, 24, 30];
function combine(arr, len) {
  //存放最后的结果
  var cidx = 1;
  var res = [];
  const result = []
  arrayN(0, arr, len, cidx, res)
  res.forEach(e => {
    list.filter(item=>item<=16).forEach(item => result.push([...e,'-'+item].join(' ')))
  })
  console.log(result);
}

function arrayN(idx, arr, len, cidx, res) {
  let arrlen = arr.length - 1;
  let ks = arrlen + 1 - (cidx + len - 1);
  for (let k = 0; k <= ks; k++) {
    let a = arr.slice(cidx + k, cidx + k + len - 1)
    res.push([arr[idx], ...a]);
  }
  if (arrlen - idx >= len - 1) arrayN(idx + 1, arr, len, cidx + 1, res);
}
combine(list, 6)
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容