给出一组数字,例如 1,2,3
打印出所有数字的组合 1,2,3,12,13,23,123

先看一下我最初的写法

const arr = [1, 2, 3, 4, 5, 6]
const result = ['']
for (let i = 0; i < arr.length; i++) {
  const temp = result.map((r) => r + arr[i])
 result.push(...temp)
}
console.log(result.slice(1))

2022-11-06T06:51:35.png

但是会发现,如果数字太多会导致栈溢出.原因就是(...temp)中的...拓展运算符

2022-11-06T06:57:37.png

所以换个方法concat也不错

2022-11-06T06:52:48.png
代码在下面:

const arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 19, 11]
let result = ['']
for (let i = 0; i < arr.length; i++) {
  const temp = result.map((r) => r + arr[i])
  result = result.concat(temp)
}
console.log(result.slice(1))

已有 2 条评论

  1. 大佬太厉害了

  2. 看过等于会了
    \

发表评论