国产成人精品18p,天天干成人网,无码专区狠狠躁天天躁,美女脱精光隐私扒开免费观看

JavaScript中怎么實(shí)現數組反轉操作

發(fā)布時(shí)間:2021-07-06 14:08 來(lái)源:億速云 閱讀:0 作者:Leah 欄目: web開(kāi)發(fā)

JavaScript中怎么實(shí)現數組反轉操作,很多新手對此不是很清楚,為了幫助大家解決這個(gè)難題,下面小編將為大家詳細講解,有這方面需求的人可以來(lái)學(xué)習下,希望你能有所收獲。

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

當需要在JavaScript中反轉數組時(shí),可以使用 reverse  方法,該方法將最后一個(gè)元素放在第一位,而第一個(gè)元素放在最后:

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

但是請記住,reverse 方法也會(huì )修改原始數組:

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  方法來(lái)反轉數組,而無(wú)需更改原始數組。

首先,通過(guò)用方括號 [] 括住spread語(yǔ)法,將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語(yǔ)法,當你需要支持較舊的瀏覽器或要使用ES5語(yǔ)法時(shí),可以結合使用 slice 和 reverse  方法。讓我們現在來(lái)看。

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

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

接下來(lái),你在新返回的數組上調用 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]

如何在沒(méi)有Reverse方法的情況下在JavaScript中反轉數組

有時(shí)面試會(huì )挑戰你對數組進(jìn)行逆向操作,而不采用 reverse 方法。沒(méi)問(wèn)題!你可以使用  for 循環(huán)和數組 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編寫(xiě)自己的反轉函數

最后,假設你的任務(wù)是編寫(xiě)自己的反轉函數,該函數需要在不創(chuàng )建副本的情況下反轉數組。乍一看,這似乎很復雜,但是不用擔心,因為它實(shí)際上很簡(jiǎn)單。

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

讓我們編寫(xiě)一個(gè)函數來(lái)做到這一點(diǎn)。

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

function customReverse(originalArray) {   let leftIndex = 0;   let rightIndex = originalArray.length - 1; }

接下來(lái),創(chuàng )建一個(gè) while 循環(huán),只要 leftIndex 小于 rightIndex,它就會(huì )運行。

在此循環(huán)內,交換 leftIndex 和 rightIndex 的值,你可以將值之一臨時(shí)存儲在臨時(shí)變量中:

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

最后,將 leftIndex 向上移動(dòng),將 rightIndex 向下移動(dòng),當 while 循環(huán)重復時(shí),它將交換倒數第二個(gè)元素,依此類(lèi)推:

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--;   } }

當沒(méi)有其他要反轉的元素時(shí),循環(huán)將立即停止。對于奇數的數組 leftIndex 和 rightIndex 的值會(huì )相等,所以不用再交換。對于偶數的數組  leftIndex 將大于 rightIndex。

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

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

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng )、來(lái)自互聯(lián)網(wǎng)轉載和分享為主,文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權請聯(lián)系站長(cháng)郵箱:ts@56dr.com進(jìn)行舉報,并提供相關(guān)證據,一經(jīng)查實(shí),將立刻刪除涉嫌侵權內容。

黑人大荫蒂高潮视频| JAPANESE人妻少妇| 92国产精品午夜福利免费| 三年片在线观看免费观看高清电影| 久久人妻夜夜做天天爽| 色先锋资源久久综合5566|