文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

JavaScript数组反转教程

2024-12-03 10:53

关注

[[381703]]

本教程将向您展示在JavaScript中使用和不使用 reverse 方法来反转数组的五种方法,以及可以使用的代码段。

如何使用Reverse方法反转JavaScript中的数组

当需要在JavaScript中反转数组时,可以使用 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] 

但是请记住,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. // [5, 4, 3, 2, 1] 

一些编码挑战可能希望您保留原始数组,因此让我们看一下如何在不更改原始数组的情况下反转数组。

如何使用Spread运算符反转JavaScript中的数组

你可以结合使用扩展运算符(Spread)和 reverse 方法来反转数组,而无需更改原始数组。

首先,通过用方括号 [] 括住spread语法,将spread运算符返回的元素放入新数组中:

 

  1. [...numbers] 

然后,你在数组上调用 reverse 方法。这样,将在新数组而不是原始数组上执行 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语法,当你需要支持较旧的浏览器或要使用ES5语法时,可以结合使用 slice 和 reverse 方法。让我们现在来看。

如何使用Slice和Reverse方法反转JavaScript中的数组

slice 方法用于将所选元素作为新数组返回,当你调用不带任何参数的方法时,它将返回一个与原始数组相同的新数组(从第一个元素到最后一个元素)。

接下来,你在新返回的数组上调用 reverse 方法,这就是为什么原始数组不反转的原因:

 

  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中反转数组

有时面试会挑战你对数组进行逆向操作,而不采用 reverse 方法。没问题!你可以使用 for 循环和数组 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编写自己的反转函数

最后,假设你的任务是编写自己的反转函数,该函数需要在不创建副本的情况下反转数组。乍一看,这似乎很复杂,但是不用担心,因为它实际上很简单。

在这里你需要做的是交换数组的第一个和最后一个元素,然后交换第二个和倒数第二个元素,依此类推,直到交换了所有元素。

 

 

 

 

让我们编写一个函数来做到这一点。

编写函数 customReverse,并使用 array.length - 1 作为变量,同时存储第一个索引为 0 和最后一个索引。

 

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

接下来,创建一个 while 循环,只要 leftIndex 小于 rightIndex,它就会运行。

在此循环内,交换 leftIndex 和 rightIndex 的值,你可以将值之一临时存储在临时变量中:

 

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

最后,将 leftIndex 向上移动,将 rightIndex 向下移动,当 while 循环重复时,它将交换倒数第二个元素,依此类推:

 

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

当没有其他要反转的元素时,循环将立即停止。对于奇数的数组 leftIndex 和 rightIndex 的值会相等,所以不用再交换。对于偶数的数组 leftIndex 将大于 rightIndex。

你可以测试该功能以查看其是否正常工作,如下所示:

 

  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] 

结束

恭喜你!你不仅学会了如何在JavaScript中反转数组,还学会了如何编写自己的反向函数。

来源:前端全栈开发者内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯