簡體   English   中英

如何在 javascript 中的 for 循環的每次迭代中將一個數組插入另一個數組

[英]How to insert an array to another array at each iteration of a for loop in javascript

我有一個 function 進行冒泡排序,我想在每次交換到另一個數組后保存數組。 冒泡排序工作正常,我可以在每次交換到控制台后記錄數組。 但我似乎無法正確推送到另一個陣列。

這是我的代碼:

 var arr = [5, 4, 3, 2, 1]; var steps = []; function bubbleSort() { for (let i = 0; i < arr.length - 1; i++) { for (let j = 0; j < arr.length - i - 1; j++) { if (arr[j] > arr[j + 1]) { swap(arr, j, j + 1); } var temp = arr; console.log(temp); steps.push(temp); } } console.log(steps); } const swap = (a, x, y) => { var temp = a[x]; a[x] = a[y]; a[y] = temp; }; bubbleSort();

這是控制台的屏幕截圖:

控制台截圖

只有當我嘗試在每個步驟中使用獲取數組時,它才能正確顯示? 我該怎么辦?

我認為克隆陣列可以工作嗎? var temp = [...arr];

 var arr = [5, 4, 3, 2, 1]; var steps = []; function bubbleSort() { for (let i = 0; i < arr.length - 1; i++) { for (let j = 0; j < arr.length - i - 1; j++) { if (arr[j] > arr[j + 1]) { swap(arr, j, j + 1); } var temp = [...arr]; console.log(temp); steps.push(temp); } } console.log(steps); } const swap = (a, x, y) => { var temp = a[x]; a[x] = a[y]; a[y] = temp; }; bubbleSort();

您正在插入 Temp-Array 的引用而不是實際內容。 這樣,您可以多次存儲引用,並在最后向您展示所有這些引用,這些引用指向您的臨時數組的最后一個版本。

您可以使用數組的解構賦值來創建一個簡單的淺拷貝來存儲。

 var arr = [5, 4, 3, 2, 1]; var steps = []; function bubbleSort() { for (let i = 0; i < arr.length - 1; i++) { for (let j = 0; j < arr.length - i - 1; j++) { if (arr[j] > arr[j + 1]) { swap(arr, j, j + 1); } var temp = arr; console.log(temp); // Changed to destructuring assignment steps.push([...temp]) } } console.log(steps); } const swap = (a, x, y) => { var temp = a[x]; a[x] = a[y]; a[y] = temp; }; bubbleSort();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM