JavaScript数组反转教程
在⼯作⾯试和编码测试中,反转具有特定限制的数组是最常见的挑战之⼀。
本教程将向您展⽰在JavaScript中使⽤和不使⽤ reverse ⽅法来反转数组的五种⽅法,以及可以使⽤的代码段。
如何使⽤Reverse⽅法反转JavaScript中的数组
当需要在JavaScript中反转数组时,可以使⽤ reverse ⽅法,该⽅法将最后⼀个元素放在第⼀位,⽽第⼀个元素放在最后:
let numbers =[1,2,3,4,5];
let reversedNumbers = verse();
console.log(reversedNumbers);
// [5, 4, 3, 2, 1]
但是请记住,reverse ⽅法也会修改原始数组:
let numbers =[1,2,3,4,5];
let reversedNumbers = verse();
console.log(reversedNumbers);
// [5, 4, 3, 2, 1]
console.log(numbers);
// [5, 4, 3, 2, 1]
⼀些编码挑战可能希望您保留原始数组,因此让我们看⼀下如何在不更改原始数组的情况下反转数组。
如何使⽤Spread运算符反转JavaScript中的数组
你可以结合使⽤扩展运算符(Spread)和 reverse ⽅法来反转数组,⽽⽆需更改原始数组。
⾸先,通过⽤⽅括号 [] 括住spread语法,将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语法,当你需要⽀持较旧的浏览器或要使⽤ES5语法时,可以结合使⽤ slice 和 reverse ⽅法。让我们现在来看。
如何使⽤Slice和Reverse⽅法反转JavaScript中的数组
slice ⽅法⽤于将所选元素作为新数组返回,当你调⽤不带任何参数的⽅法时,它将返回⼀个与原始数组相同的新数组(从第⼀个元素到最后⼀个元素)。
接下来,你在新返回的数组上调⽤ 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]
如何在没有Reverse⽅法的情况下在JavaScript中反转数组
如何下载javascript有时⾯试会挑战你对数组进⾏逆向操作,⽽不采⽤ reverse ⽅法。没问题!你可以使⽤ for 循环和数组 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编写⾃⼰的反转函数
最后,假设你的任务是编写⾃⼰的反转函数,该函数需要在不创建副本的情况下反转数组。乍⼀看,这似乎很复杂,但是不⽤担⼼,因为它实际上很简单。
在这⾥你需要做的是交换数组的第⼀个和最后⼀个元素,然后交换第⼆个和倒数第⼆个元素,依此类推,直到交换了所有元素。
让我们编写⼀个函数来做到这⼀点。
编写函数 customReverse,并使⽤ array.length - 1 作为变量,同时存储第⼀个索引为 0 和最后⼀个索
引。
function customReverse(originalArray){
let leftIndex =0;
let rightIndex = originalArray.length -1;
}
接下来,创建⼀个 while 循环,只要 leftIndex ⼩于 rightIndex,它就会运⾏。
在此循环内,交换 leftIndex 和 rightIndex 的值,你可以将值之⼀临时存储在临时变量中:
while(leftIndex < rightIndex){
// 交换元素
let temp = originalArray[leftIndex];
originalArray[leftIndex]= originalArray[rightIndex];
originalArray[rightIndex]= temp;
}
最后,将 leftIndex 向上移动,将 rightIndex 向下移动,当 while 循环重复时,它将交换倒数第⼆个元素,依此类推:
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--;
}
}
当没有其他要反转的元素时,循环将⽴即停⽌。对于奇数的数组 leftIndex 和 rightIndex 的值会相等,所以不⽤再交换。对于偶数的数组leftIndex 将⼤于 rightIndex。
你可以测试该功能以查看其是否正常⼯作,如下所⽰:
let myArray =[1,2,3,4,5];
customReverse(myArray);
console.log(myArray);
// output is [5, 4, 3, 2, 1]
结束
恭喜你!你不仅学会了如何在JavaScript中反转数组,还学会了如何编写⾃⼰的反向函数。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论