我遇到了返回原始數組而不是有序數組的函數的問題。我試圖切片數組並返回排序,但它不工作。有想法該怎麼解決這個嗎?不修改原始數組返回分類數組
function sortArr(comparator, array){
var newArray = array.slice();
for(var i = 0; i < newArray.size; i++)
{
var min = i;
for(var x = i; x < newArray.size; x++)
{
if(comparator(newArray[min],newArray[x]) == true)
{
min = x;
}
}
var temp = newArray[i];
newArray[i] = newArray[min];
newArray[min] = temp;
}
return newArray;
}
我固定的功能:
function sortArr(comparator, array){
/*your code here*/
var i, x;
var min;
var newArray = array.slice();
for(i = 0; i < newArray.length - 1; i++)
{
min = i;
for(x = i + 1; x < newArray.length; x++)
{
if(comparator(newArray[min],newArray[x]) == true)
{
min = x;
}
}
if(min != i){
var temp = newArray[i];
newArray[i] = newArray[min];
newArray[min] = temp;
}
}
return newArray;
}
它是如何*「不工作」*?我有一種感覺,這個問題不是關於避免原始數組的突變,而是關於爲什麼你的排序算法不起作用。 – Joseph
var newArray = array.slice();'這應該創建一個副本。逐步完成排序算法。 –
我甚至都沒有看到你修改原始數組的方式不能保持它的完整性,我認爲你有算法問題,而不是 - 返回排序的結果 - 問題,請澄清 – AGE