站長資訊網
        最全最豐富的資訊網站

        ES6怎么求數組反轉

        在ES6中,可以利用數組對象的reverse()方法來實現數組反轉,該方法用于顛倒數組中元素的順序,將最后一個元素放在第一位,而第一個元素放在最后,語法“array.reverse()”。reverse()方法會修改原始數組,如果不想修改需要配合擴展運算符“…”使用,語法“[…array].reverse()”。

        ES6怎么求數組反轉

        前端(vue)入門到精通課程:進入學習
        Apipost = Postman + Swagger + Mock + Jmeter 超好用的API調試工具:點擊使用

        本教程操作環境:windows7系統、ECMAScript 6版、Dell G3電腦。

        在工作面試和編碼測試中,反轉具有特定限制的數組是最常見的挑戰之一。

        在ES6中,可以利用數組對象的reverse()方法來實現數組反轉。reverse()方法可反轉數組元素的順序,第一個元素變成最后一個元素,最后一個元素變成第一個元素。

        如何使用Reverse方法反轉JavaScript中的數組

        let numbers = [1, 2, 3, 4, 5]; let reversedNumbers = numbers.reverse();  console.log(reversedNumbers); // [5, 4, 3, 2, 1]
        登錄后復制

        但是請記住,reverse 方法會修改原始數組:

        let numbers = [1, 2, 3, 4, 5]; let reversedNumbers = numbers.reverse();  console.log(reversedNumbers); // [5, 4, 3, 2, 1]  console.log(numbers); // [5, 4, 3, 2, 1]
        登錄后復制

        一些編碼挑戰可能希望您保留原始數組,因此讓我們看一下如何在不更改原始數組的情況下反轉數組。

        如何使用Spread運算符反轉JavaScript中的數組

        你可以結合使用擴展運算符(Spread)和 reverse 方法來反轉數組,而無需更改原始數組。

        首先,通過用方括號 [] 括住spread語法,將spread運算符返回的元素放入新數組中:

        [...numbers]
        登錄后復制

        然后,你在數組上調用 reverse 方法。這樣,將在新數組而不是原始數組上執行 reverse 方法:

        let numbers = [1, 2, 3, 4, 5]; let reversedNumbers = [...numbers].reverse();  console.log(reversedNumbers); // [5, 4, 3, 2, 1]  console.log(numbers); // [1, 2, 3, 4, 5]
        登錄后復制

        注意spread 方法是ES6語法,當你需要支持較舊的瀏覽器或要使用ES5語法時,可以結合使用 slicereverse 方法。讓我們現在來看。

        如何使用Slice和Reverse方法反轉JavaScript中的數組

        slice 方法用于將所選元素作為新數組返回,當你調用不帶任何參數的方法時,它將返回一個與原始數組相同的新數組(從第一個元素到最后一個元素)。

        接下來,你在新返回的數組上調用 reverse 方法,這就是為什么原始數組不反轉的原因:

        let numbers = [1, 2, 3, 4, 5]; let reversedNumbers = numbers.slice().reverse();  console.log(reversedNumbers); // [5, 4, 3, 2, 1]  console.log(numbers); // [1, 2, 3, 4, 5]
        登錄后復制

        如何在沒有Reverse方法的情況下在JavaScript中反轉數組

        有時面試會挑戰你對數組進行逆向操作,而不采用 reverse 方法。沒問題!你可以使用 for 循環和數組 push 方法的組合,就像下面的例子。

        let numbers = [1, 2, 3, 4, 5]; let reversedNumbers = [];  for(let i = numbers.length -1; i >= 0; i--) {   reversedNumbers.push(numbers[i]); }  console.log(reversedNumbers);
        登錄后復制

        如何用JS編寫自己的反轉函數

        最后,假設你的任務是編寫自己的反轉函數,該函數需要在不創建副本的情況下反轉數組。乍一看,這似乎很復雜,但是不用擔心,因為它實際上很簡單。

        在這里你需要做的是交換數組的第一個和最后一個元素,然后交換第二個和倒數第二個元素,依此類推,直到交換了所有元素。

        ES6怎么求數組反轉

        讓我們編寫一個函數來做到這一點。

        編寫函數 customReverse,并使用 array.length - 1 作為變量,同時存儲第一個索引為 0 和最后一個索引。

        function customReverse(originalArray) {   let leftIndex = 0;   let rightIndex = originalArray.length - 1; }
        登錄后復制

        接下來,創建一個 while 循環,只要 leftIndex 小于 rightIndex,它就會運行。

        在此循環內,交換 leftIndexrightIndex 的值,你可以將值之一臨時存儲在臨時變量中:

        while (leftIndex < rightIndex) {   // 交換元素   let temp = originalArray[leftIndex];   originalArray[leftIndex] = originalArray[rightIndex];   originalArray[rightIndex] = temp; }
        登錄后復制

        最后,將 leftIndex 向上移動,將 rightIndex 向下移動,當 while 循環重復時,它將交換倒數第二個元素,依此類推:

         function customReverse(originalArray) {    let leftIndex = 0;   let rightIndex = originalArray.length - 1;    while (leftIndex < rightIndex) {      // 用temp變量交換元素     let temp = originalArray[leftIndex];     originalArray[leftIndex] = originalArray[rightIndex];     originalArray[rightIndex] = temp;      // 將索引移到中間     leftIndex++;     rightIndex--;   } }
        登錄后復制

        當沒有其他要反轉的元素時,循環將立即停止。對于奇數的數組 leftIndexrightIndex 的值會相等,所以不用再交換。對于偶數的數組 leftIndex 將大于 rightIndex

        你可以測試該功能以查看其是否正常工作,如下所示:

        let myArray = [1, 2, 3, 4, 5];  customReverse(myArray);  console.log(myArray);  // output is [5, 4, 3, 2, 1]
        登錄后復制

        贊(0)
        分享到: 更多 (0)
        網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
        主站蜘蛛池模板: 欧美精品国产精品| 亚洲精品性视频| 国内精品在线视频| 中文精品人人永久免费| 国产精品久久久久久久午夜片| 97久久精品无码一区二区| 亚洲av永久无码精品古装片 | 国产精品亚洲精品日韩已满| 中文字幕精品亚洲无线码一区| 精品无码人妻久久久久久| 国产精品第六页| www亚洲欲色成人久久精品| 精品国产网红福利在线观看 | 精品久久久久久无码中文野结衣| 四虎精品8848ys一区二区| 国产精品久久国产精品99盘| 国产精品无码a∨精品| 久久久久成人精品无码中文字幕| 中文字幕一精品亚洲无线一区| 欧美XXXX黑人又粗又长精品| 国产在线精品观看免费观看| 国产观看精品一区二区三区| 99久久精品国产一区二区三区| 四虎4hu永久免费国产精品| 亚洲国产精品自在线一区二区| 久久精品人人做人人爽电影| 久久精品国产99国产电影网| 国产亚洲精品观看91在线| 国产精品爽黄69天堂a| 久久国产精品久久| 久久国产精品国产自线拍免费| 日韩精品免费在线视频| 青青青青久久精品国产| 99精品视频在线观看婷| 99热精品久久只有精品| 国产精品人成在线观看| 精品亚洲一区二区三区在线观看| 久久激情亚洲精品无码?V| 热久久国产欧美一区二区精品| 西瓜精品国产自在现线| 亚洲高清国产AV拍精品青青草原|