成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

JavaScript數(shù)組反轉(zhuǎn)教程

開發(fā) 前端
在工作面試和編碼測(cè)試中,反轉(zhuǎn)具有特定限制的數(shù)組是比較常見的挑戰(zhàn)之一。本教程將向您展示在JavaScript中使用和不使用 reverse 方法來反轉(zhuǎn)數(shù)組的五種方法,以及可以使用的代碼段。

 在工作面試和編碼測(cè)試中,反轉(zhuǎn)具有特定限制的數(shù)組是比較常見的挑戰(zhàn)之一。

[[381703]]

本教程將向您展示在JavaScript中使用和不使用 reverse 方法來反轉(zhuǎn)數(shù)組的五種方法,以及可以使用的代碼段。

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

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

 

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

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

  1. let numbers = [1, 2, 3, 4, 5]; 
  2. let reversedNumbers = numbers.reverse(); 
  3.  
  4. console.log(reversedNumbers); 
  5. // [5, 4, 3, 2, 1] 
  6.  
  7. console.log(numbers); 
  8. // [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ù)組。

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

 

  1. [...numbers] 

然后,你在數(shù)組上調(diào)用 reverse 方法。這樣,將在新數(shù)組而不是原始數(shù)組上執(zhí)行 reverse 方法:

 

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

注意:spread 方法是ES6語法,當(dāng)你需要支持較舊的瀏覽器或要使用ES5語法時(shí),可以結(jié)合使用 slice 和 reverse 方法。讓我們現(xiàn)在來看。

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

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

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

 

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

如何在沒有Reverse方法的情況下在JavaScript中反轉(zhuǎn)數(shù)組

有時(shí)面試會(huì)挑戰(zhàn)你對(duì)數(shù)組進(jìn)行逆向操作,而不采用 reverse 方法。沒問題!你可以使用 for 循環(huán)和數(shù)組 push 方法的組合,就像下面的例子。

 

  1. let numbers = [1, 2, 3, 4, 5]; 
  2. let reversedNumbers = []; 
  3.  
  4. for(let i = numbers.length -1; i >= 0; i--) { 
  5.   reversedNumbers.push(numbers[i]); 
  6.  
  7. console.log(reversedNumbers); 

如何用JS編寫自己的反轉(zhuǎn)函數(shù)

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

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

 

 

 

 

讓我們編寫一個(gè)函數(shù)來做到這一點(diǎn)。

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

 

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

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

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

 

  1. while (leftIndex < rightIndex) { 
  2.   // 交換元素 
  3.   let temp = originalArray[leftIndex]; 
  4.   originalArray[leftIndex] = originalArray[rightIndex]; 
  5.   originalArray[rightIndex] = temp

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

 

  1. function customReverse(originalArray) { 
  2.  
  3.   let leftIndex = 0; 
  4.   let rightIndex = originalArray.length - 1; 
  5.  
  6.   while (leftIndex < rightIndex) { 
  7.  
  8.     // 用temp變量交換元素 
  9.     let temp = originalArray[leftIndex]; 
  10.     originalArray[leftIndex] = originalArray[rightIndex]; 
  11.     originalArray[rightIndex] = temp
  12.  
  13.     // 將索引移到中間 
  14.     leftIndex++; 
  15.     rightIndex--; 
  16.   } 

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

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

 

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

結(jié)束

恭喜你!你不僅學(xué)會(huì)了如何在JavaScript中反轉(zhuǎn)數(shù)組,還學(xué)會(huì)了如何編寫自己的反向函數(shù)。

責(zé)任編輯:華軒 來源: 前端全棧開發(fā)者
相關(guān)推薦

2022-04-20 11:14:55

Python列表數(shù)組

2010-07-20 13:12:11

Perl數(shù)組

2016-08-03 17:23:47

javascripthtml前端

2014-01-22 09:46:42

JavaScript數(shù)組

2019-07-17 14:06:45

JavaScript數(shù)組轉(zhuǎn)換

2016-10-13 19:33:10

javascript數(shù)組indexOf

2010-10-08 16:11:06

Javascript數(shù)

2020-08-21 17:40:15

JavaScript開發(fā) 技巧

2016-12-21 09:35:55

JavaScript原生數(shù)組函數(shù)

2017-04-06 14:10:08

JavaScript數(shù)組排序

2021-03-11 23:43:20

JavaScript數(shù)組開發(fā)

2021-03-18 10:45:02

JavaScript數(shù)組運(yùn)算符

2024-08-30 08:43:24

JavaScriptforEachfor循環(huán)

2022-09-26 09:01:15

語言數(shù)據(jù)JavaScript

2024-06-18 10:28:46

2021-07-26 05:20:47

JavaScript解構(gòu)賦值數(shù)組解構(gòu)

2024-07-17 11:35:31

JavaScript解構(gòu)賦值

2024-09-10 15:34:18

JavaScript解構(gòu)賦值

2020-12-08 08:07:41

JavaScript中等分?jǐn)?shù)組

2019-07-25 10:08:05

JavaScript數(shù)組轉(zhuǎn)換
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 91久久国产综合久久 | 一区欧美 | 毛片一级片 | 国产精品99久久久久久久久久久久 | 日韩精品一区二区三区在线观看 | aa级毛片毛片免费观看久 | 免费观看www7722午夜电影 | 日韩国产欧美一区 | 亚洲成人二区 | 97伦理影院 | 色综合99 | 青青激情网 | 欧美精品久久久久 | 亚洲欧美网站 | 亚洲国产精品一区二区三区 | 特级做a爰片毛片免费看108 | 成人在线不卡 | 九色在线观看 | 色噜噜亚洲男人的天堂 | 国产免费一二三区 | 久久精品久久综合 | 精品一区二区三区在线视频 | 久久69精品久久久久久久电影好 | 国产成人免费视频网站高清观看视频 | 中文字幕在线网 | 久草视频观看 | 免费一级黄 | 91精品国产91久久久久青草 | 成人h动漫亚洲一区二区 | 天天亚洲| 一区二区三区在线播放视频 | 欧美亚洲在线视频 | 91久久精品国产 | 中文字幕在线观看日韩 | 日本精品视频 | 18成人在线观看 | 日韩欧美三区 | 国产一区二区三区精品久久久 | 99久久免费精品国产免费高清 | 国产欧美一区二区三区在线看 | 波多野结衣一区二区三区 |