十年網(wǎng)站開發(fā)經(jīng)驗 + 多家企業(yè)客戶 + 靠譜的建站團隊
量身定制 + 運營維護+專業(yè)推廣+無憂售后,網(wǎng)站問題一站解決
JavaScript中怎么實現(xiàn)數(shù)組反轉操作,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。
創(chuàng)新互聯(lián)建站堅持“要么做到,要么別承諾”的工作理念,服務領域包括:網(wǎng)站建設、成都網(wǎng)站制作、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣等服務,滿足客戶于互聯(lián)網(wǎng)時代的海豐網(wǎng)站設計、移動媒體設計的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡建設合作伙伴!
如何使用Reverse方法反轉JavaScript中的數(shù)組
當需要在JavaScript中反轉數(shù)組時,可以使用 reverse 方法,該方法將最后一個元素放在第一位,而第一個元素放在最后:
let numbers = [1, 2, 3, 4, 5]; let reversedNumbers = numbers.reverse(); console.log(reversedNumbers); // [5, 4, 3, 2, 1]
但是請記住,reverse 方法也會修改原始數(shù)組:
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]
一些編碼挑戰(zhàn)可能希望您保留原始數(shù)組,因此讓我們看一下如何在不更改原始數(shù)組的情況下反轉數(shù)組。
如何使用Spread運算符反轉JavaScript中的數(shù)組
你可以結合使用擴展運算符(Spread)和 reverse 方法來反轉數(shù)組,而無需更改原始數(shù)組。
首先,通過用方括號 [] 括住spread語法,將spread運算符返回的元素放入新數(shù)組中:
[...numbers]
然后,你在數(shù)組上調用 reverse 方法。這樣,將在新數(shù)組而不是原始數(shù)組上執(zhí)行 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語法時,可以結合使用 slice 和 reverse 方法。讓我們現(xiàn)在來看。
如何使用Slice和Reverse方法反轉JavaScript中的數(shù)組
slice 方法用于將所選元素作為新數(shù)組返回,當你調用不帶任何參數(shù)的方法時,它將返回一個與原始數(shù)組相同的新數(shù)組(從第一個元素到最后一個元素)。
接下來,你在新返回的數(shù)組上調用 reverse 方法,這就是為什么原始數(shù)組不反轉的原因:
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中反轉數(shù)組
有時面試會挑戰(zhàn)你對數(shù)組進行逆向操作,而不采用 reverse 方法。沒問題!你可以使用 for 循環(huán)和數(shù)組 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編寫自己的反轉函數(shù)
最后,假設你的任務是編寫自己的反轉函數(shù),該函數(shù)需要在不創(chuàng)建副本的情況下反轉數(shù)組。乍一看,這似乎很復雜,但是不用擔心,因為它實際上很簡單。
在這里你需要做的是交換數(shù)組的第一個和最后一個元素,然后交換第二個和倒數(shù)第二個元素,依此類推,直到交換了所有元素。
讓我們編寫一個函數(shù)來做到這一點。
編寫函數(shù) customReverse,并使用 array.length - 1 作為變量,同時存儲第一個索引為 0 和最后一個索引。
function customReverse(originalArray) { let leftIndex = 0; let rightIndex = originalArray.length - 1; }
接下來,創(chuàng)建一個 while 循環(huán),只要 leftIndex 小于 rightIndex,它就會運行。
在此循環(huán)內(nèi),交換 leftIndex 和 rightIndex 的值,你可以將值之一臨時存儲在臨時變量中:
while (leftIndex < rightIndex) { // 交換元素 let temp = originalArray[leftIndex]; originalArray[leftIndex] = originalArray[rightIndex]; originalArray[rightIndex] = temp; }
最后,將 leftIndex 向上移動,將 rightIndex 向下移動,當 while 循環(huán)重復時,它將交換倒數(shù)第二個元素,依此類推:
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--; } }
當沒有其他要反轉的元素時,循環(huán)將立即停止。對于奇數(shù)的數(shù)組 leftIndex 和 rightIndex 的值會相等,所以不用再交換。對于偶數(shù)的數(shù)組 leftIndex 將大于 rightIndex。
你可以測試該功能以查看其是否正常工作,如下所示:
let myArray = [1, 2, 3, 4, 5]; customReverse(myArray); console.log(myArray); // output is [5, 4, 3, 2, 1]
看完上述內(nèi)容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝您對創(chuàng)新互聯(lián)的支持。