我正在創建一個Chrome擴展,並使用排序的數組獲得一些奇怪的結果。我有兩個全局數組叫做「timearray」和「timearrayorig」(timearray是timearrayorig的排序版本)。在函數中,我在timearrayorig中設置了一堆值,然後將整個數組複製到timearray並對timearray排序。出於某種原因,這也排序timearrayorig。如果有人能解釋爲什麼會出現這種情況,我將不勝感激。數組排序創建鏈接數組?
for (var i = 0; i < triparray.length; i++) {
for (var j = 0; j < trainsfeed.length; j++) {
if (trainsfeed[j].getElementsByTagName('Trip')[0].childNodes[0].nodeValue == triparray[i]) {
if (timearrayorig.length < i + 1 || timearrayorig[i] > Number(trainsfeed[j].getElementsByTagName('Scheduled')[0].childNodes[0].nodeValue)) {
timearrayorig.push(Number(trainsfeed[j].getElementsByTagName('Scheduled')[0].childNodes[0].nodeValue));
}
}
}
}
timearray = timearrayorig;
//timearray.sort();
(trainsfeed是由消息和triparray分離一堆XML的是所有不同的值的「脫扣」字段。timearrayorig和timearray列表被用於從所述元件triparray的每個元件的最早時間)
如果我運行此腳本並在調試控制檯中找到timearrayorig和timearray的值,它們是相同的,例如[1365801720,1365801180,1365801600,1365802800,1365800940]。但是當我排序時間陣列時,它們都變成[1365800940,1365801180,1365801600,1365801720,1365802800]。
陣列中的JavaScript是引用類型,所以當你分配timearrayorig到timearray你剛纔指定數組的參考,如果你想複製它嘗試陣列切片法 – Givi