【问题标题】:Temporary Variable Not Being Stored In Javascript临时变量未存储在 Javascript 中
【发布时间】:2016-06-18 11:27:18
【问题描述】:

我正在构建一个排序算法(Selection Sort)并且已经能够完成它。但是,如果我想添加一个临时变量,它存储未排序的数组,它似乎立即更改为已排序的数组:

 var A = [-8, 1, 77, -99, 3, 5];
 function findMin(A,startIndex,endIndex) {
 var temp = startIndex;
 for(var x = startIndex; x <= endIndex; x++){


 if(A[temp] > A[x]) {

   temp = x;

}

}
return temp;
}
function swapNumbers(A, index1, index2) {
var temp_2 = A[index1];
A[index1] = A[index2];
A[index2] = temp_2;

return A;
}

function sort(A) {
var endofArray = A.length - 1;
var temp3 = A;
var Asorted = [];
for(var i = 0; i < A.length; i++) {
    swapNumbers(A, i, findMin(A, i, endofArray));

}
Asorted = A;
console.log("The unsorted array was " + "[" + temp3 + "]" 
+ "." + " The sorted array is " + "[" + Asorted + "]" + "."); 
return Asorted; /*subsitute return for 
console.log() to display results*/
}
sort(A);

console.log("The unsorted array was " + "[" + temp3 + "]" + "." + " The sorted array is " + "[" + Asorted + "]" + "."); 中的temp3 似乎输出:

The unsorted array was [-99,-8,1,3,5,77]. The sorted array is [-99,-8,1,3,5,77].

代替:

The unsorted array was [-8, 1, 77, -99, 3, 5]. The sorted array is [-99,-8,1,3,5,77].

请告诉我我的错误。 `

【问题讨论】:

标签: javascript arrays sorting selection-sort


【解决方案1】:

当您将 temp3 分配给 A 时,您基本上只是指向内存中的 A 数组,而不是实际复制该数组。试试:

var temp3 = A.slice();

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/slice

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-22
    • 1970-01-01
    • 2022-01-23
    相关资源
    最近更新 更多