日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

将0移到最后,在原数组操作,并且不能改变源数据顺序(JS编程)

發布時間:2025/3/16 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 将0移到最后,在原数组操作,并且不能改变源数据顺序(JS编程) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、問題描述:

將0移到最后,在原數組操作,并且不能改變源數據順序。

示例:輸入:[2,0,0,1,0,3],? 結果:[2,1,3,0,0,0]

?

二、問題分析與解決:

注意是在原數組上操作,不要進行任何數組拷貝操作,還要保證操作后的源數據順序不變。

直接上JS代碼:

//ES6箭頭函數寫法 const moveZero = (arr) => {let y = 0;//定義y用于控制循環結束for (let i = 0; y < arr.length; y++) {if (arr[i] === 0) arr.push(arr.splice(i, 1)[0]);//循環到是0的位置就刪除該元素0并且在arr末尾push進這個元素0,由于splice刪除了該位置元素,所以i不用+1,下次循環仍然檢查i位置的元素else i++;//循環到不是0的位置就繼續往后循環 }return arr;//返回操作后的原數組 };//運行如下: moveZero([2,0,0,1,0,3]);//[2,1,3,0,0,0]

注: 細節之處體現差別,Array.prototype.splice(startIndex, counts, addElement)方法的作用和三個參數的含義盡人皆知。但是很少有人關心它的返回值,splice的返回值是原數組中被刪除的元素組成的數組,如[1,2,3].splice(1,2)返回被刪除的元素數組[2,3],利用這一點可以將代碼簡化,即arr.push(arr.splice(i, 1)[0]),直接將刪除后的元素push進原數組。順便提一下push方法返回的是push操作之后,原數組的length屬性,如[].push(1,2,3)返回數字3,即push后數組[1,2,3]的length為3.

?

如有疑問歡迎留言討論,謝謝!

(本文為原創博客,嚴禁非法抄襲或復制,轉載請注明出處:https://www.cnblogs.com/xiao-pengyou/)

?

轉載于:https://www.cnblogs.com/xiao-pengyou/p/10632378.html

與50位技術專家面對面20年技術見證,附贈技術全景圖

總結

以上是生活随笔為你收集整理的将0移到最后,在原数组操作,并且不能改变源数据顺序(JS编程)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。