我在JS中读到字符串是不可变的,尽管JS的默认设置似乎是“通过引用传递”,但在递归层次结构中传递相同的字符串不会附加到相同的字符串,而是会创建副本。
我的场景需要创建一次单个字符串对象,并在递归和其他函数的非常深和很长的层次结构中传递,那么我如何实现这一点呢?我是一个喜欢C++的人,在C++中这很容易……只需通过引用传递,所有函数都在同一位字符串上工作。
发布于 2013-11-15 19:05:09
您可以使用包装器对象模拟原始值的按引用传递。这涉及到改变你的函数以意识到这一点:
function append(strWrapper,n) {
if (n <= 0) {
return strWrapper;
} else {
strWrapper.val += n;
return append(strWrapper, n-1);
}
}
console.log(append({ val : '' }, 9).val); // 987654321当然,如果您愿意的话,包装器对象可以变成包装器类。
*JS仅为对象传递引用,而不为原始值传递
发布于 2020-09-19 00:18:15
您可以通过引用传递数组/字符串对象,类似于下面的代码来查找我传递的字符串数组(输出)的子序列,以存储在每次调用中传递的所有子序列。`
function subsequence( input, output){
if(input.length==0)
{
output[0]="";
return 1;
}
let smallStr = input.substr(1);
let smallerSeqSize = subsequence(smallStr,output);
for(let i=0;i<smallerSeqSize;i++){
output[smallerSeqSize+i] = input[0]+output[i];
}
return 2*smallerSeqSize;
}
function main(){
let input = "abc";
let output = new Array("")
let sizeOutput = subsequence(input,output);
console.log(output)
}`https://stackoverflow.com/questions/19999398
复制相似问题