es6...扩展运算?-灵析社区

练习代码二十年

![图1](https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20250103/18b9c6319f1ab803780f644aedcabbf4.png) ![图2](https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20250103/35d45c62fd1adec78aed5512da12b902.png) 为什么一定要使用 `...path` 才能正确的运行,在上面代码中测试的结果是一样的,而下面则一定要用 `...` ?否则就会出现如图2所示的结果 这段代码是 解决 (给定两个整数 n 和 k,返回范围 [1,n] 中所有可能的 k 个数的组合。) 这个问题的 ,用的回溯 Title --> "use strict"; let a = [2,3] let b = [] let c = [] b.push(a) c.push([...a]) console.log(b) console.log(c) var combine = function(n, k) { let result = [] let path = [] const backstrack = function(n,k,starIndex){ if(path.length === k){ // 保存结果 // result.push(path) result.push([...path]) return; } for(let i = starIndex;i

阅读量:17

点赞量:0

问AI
这个用C语言中的指针很好理解,result.push(path),只是创建了个指针,指向了path数组。修改path,就同时修改所有push进入result的值。 "image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20241215/a8f40cc32123c1cf9d1d90056df508a0.png) 而result.push([...path])则是对path进行了解构,然后再进行push操作,存入result数组,此时修改path,对result无影响。 "image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20241215/862e18e14c9e3d8d1cf452d6082a20a6.png) 也可以先看看这个,更好理解。 "image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20241215/32da35c0b86ba77276fd197970f95e2c.png)