中文字幕日韩精品一区二区免费_精品一区二区三区国产精品无卡在_国精品无码专区一区二区三区_国产αv三级中文在线

JavaScript實現(xiàn)數(shù)組反轉(zhuǎn)操作的方法

今天小編給大家分享一下JavaScript實現(xiàn)數(shù)組反轉(zhuǎn)操作的方法的相關(guān)知識點,內(nèi)容詳細(xì),邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。

多端合一成都響應(yīng)式網(wǎng)站建設(shè):PC+平板+手機(jī),同一后臺修改數(shù)據(jù)多端同步更新提交您的需求,獲取網(wǎng)站建設(shè)與營銷策劃方案報價,我們會在1小時內(nèi)與您聯(lián)系!

如何使用Reverse方法反轉(zhuǎn)JavaScript中的數(shù)組

當(dāng)需要在JavaScript中反轉(zhuǎn)數(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ù)組的情況下反轉(zhuǎn)數(shù)組。

如何使用Spread運(yùn)算符反轉(zhuǎn)JavaScript中的數(shù)組

你可以結(jié)合使用擴(kuò)展運(yùn)算符(Spread)和 reverse  方法來反轉(zhuǎn)數(shù)組,而無需更改原始數(shù)組。

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

[...numbers]

然后,你在數(shù)組上調(diào)用 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語法,當(dāng)你需要支持較舊的瀏覽器或要使用ES5語法時,可以結(jié)合使用 slice 和 reverse  方法。讓我們現(xiàn)在來看。

如何使用Slice和Reverse方法反轉(zhuǎn)JavaScript中的數(shù)組

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

接下來,你在新返回的數(shù)組上調(diào)用 reverse 方法,這就是為什么原始數(shù)組不反轉(zhuǎn)的原因:

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中反轉(zhuǎn)數(shù)組

有時面試會挑戰(zhàn)你對數(shù)組進(jìn)行逆向操作,而不采用 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編寫自己的反轉(zhuǎn)函數(shù)

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

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

JavaScript實現(xiàn)數(shù)組反轉(zhuǎn)操作的方法

讓我們編寫一個函數(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,它就會運(yùn)行。

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

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

最后,將 leftIndex 向上移動,將 rightIndex 向下移動,當(dāng) while 循環(huán)重復(fù)時,它將交換倒數(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--;   } }

當(dāng)沒有其他要反轉(zhuǎn)的元素時,循環(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]

以上就是“JavaScript實現(xiàn)數(shù)組反轉(zhuǎn)操作的方法”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學(xué)習(xí)更多的知識,請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。

當(dāng)前文章:JavaScript實現(xiàn)數(shù)組反轉(zhuǎn)操作的方法
文章地址:http://www.rwnh.cn/article46/jijjeg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站導(dǎo)航手機(jī)網(wǎng)站建設(shè)、營銷型網(wǎng)站建設(shè)、定制網(wǎng)站品牌網(wǎng)站設(shè)計、自適應(yīng)網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都做網(wǎng)站
兰西县| 柘城县| 准格尔旗| 武定县| 遵义市| 武功县| 兰考县| 东乌珠穆沁旗| 木里| 深圳市| 兴国县| 宜宾县| 大港区| 棋牌| 喀喇| 高州市| 隆昌县| 成安县| 彝良县| 留坝县| 勃利县| 屯昌县| 甘孜| 平南县| 余庆县| 砀山县| 区。| 濮阳市| 定陶县| 平舆县| 若尔盖县| 平安县| 靖西县| 泾川县| 大理市| 宝应县| 秦安县| 都兰县| 普宁市| 阿克| 静宁县|