簡體   English   中英

從數組拼接值並將拼接的值推入另一個數組

[英]Splice value from an array and push spliced value into another array

您好,這是我的問題。我有一個任務,我需要從數組中刪除元素,然后將它們推入另一個數組,然后返回帶有刪除元素的數組。 例如,在這種情況下,我必須刪除所有0值,並將它們推入'a'數組,然后返回具有0個值的'a'數組。 我通過使用splice方法和循環從數組中刪除了0個值,但我真的不知道如何將刪除的elemts推送到'a'數組中,我試圖使用push方法,但對我不起作用。 希望你能幫助我。謝謝大家。

 function moveZeros(array) { var a = []; for (var i = array.length - 1; i--;) { if (array[i] == "0") { array.splice(i, 1); } } return a; } moveZeros([1, 2, 0, 1, 0, 1, 0, 3, 0, 1]); 

使用push應該可以。 .splice方法將返回一個數組,其中包含已刪除的元素,您可以使用spread運算符...將其作為push一組參數傳遞:

 function moveZeros(array) { var a = []; for (var i = array.length - 1; i >= 0; i--) { if (array[i] == "0") { a.push(...array.splice(i, 1)); } } return a; } const array = [0, 1, 2, 0, 1, 0, 1, 0, 3, 0, 1, 0, 0]; console.log(moveZeros(array)); console.log(array) 

最后,應將i--作為循環的最后一部分,以便僅在每次迭代完成時才執行(而不是在開始時)。 然后,將條件更改為i >= 0這樣您就不會在數組的前面錯過零。

Array.splice()返回移除元件的陣列,並且可以使用Array.concat()將它們添加到a數組。

筆記:

  1. i初始化為不帶-1的array.length ,因為條件i--在執行循環主體之前被檢查。
  2. 由於數組是從頭到尾進行迭代a ,因此將a到已刪除的元素以保持原始順序。

 function moveZeros(array) { var a = []; for (var i = array.length; i--;) { if (array[i] === 0) { a = array.splice(i, 1).concat(a); } } return a; } var result = moveZeros([1, 2, 0, 1, 0, 1, 0, 3, 0, 1, 0]); // I've added a last 0 to the array to show that all items were removed console.log(result); 

您可以從頭開始迭代,並在必要時拼接數組。 此解決方案使array變異。

 function moveZeros(array) { var i = array.length, a = []; while (i--) { if (array[i] === 0) { a.push(array.splice(i, 1)[0]); } } return a; } var array = [1, 2, 0, 1, 0, 1, 0, 3, 0, 1]; console.log(moveZeros(array)); console.log(array); 
 .as-console-wrapper { max-height: 100% !important; top: 0; } 

暫無
暫無

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

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