Javascript 具有不同回调的同一函数的不同输出(Heap';s算法)

Javascript 具有不同回调的同一函数的不同输出(Heap';s算法),javascript,Javascript,我使用的是Heap的算法,它与回调函数outputconsole一起很好地记录了结果。但是,如果我将回调函数output的操作更改为array.push,它会一次又一次地推同一个数组。我做错了什么 let swap=函数(数组,index1,index2){ var-temp=数组[index1]; 数组[index1]=数组[index2]; 数组[index2]=温度; 返回数组; }; 让置换堆=函数(数组,回调,n){ n=n | | array.length; 如果(n==1){ 回

我使用的是Heap的算法,它与回调函数
output
console一起很好地记录了结果。但是,如果我将回调函数
output
的操作更改为
array.push
,它会一次又一次地推同一个数组。我做错了什么

let swap=函数(数组,index1,index2){
var-temp=数组[index1];
数组[index1]=数组[index2];
数组[index2]=温度;
返回数组;
};
让置换堆=函数(数组,回调,n){
n=n | | array.length;
如果(n==1){
回调(数组);
}否则{

对于(var i=1;i数组是一个
对象
,对象是指针/引用..我使用
spread
操作符来克隆输入,这样它就不会继续执行引用jitsu

let swap=函数(数组,index1,index2){
var-temp=数组[index1];
数组[index1]=数组[index2];
数组[index2]=温度;
返回数组;
};
让置换堆=函数(数组,回调,n){
n=n | | array.length;
如果(n==1){
回调(数组);
}否则{
对于(变量i=1;i:D
};
排列堆([“玛丽”、“约翰”、“丹尼斯”],输出);

console.log(finalResult)
下一集结束后的最后一个问题。在swap函数上,当我调用
var temp=array[index1];array[index1]=array[index2];array[index2]=temp;
,我不会更改该键的对象值?即使在这之后,初始对象仍保持不变?是..因为
array
本身已编辑..记住对象是引用而不是副本