> 웹 프론트엔드 > 프런트엔드 Q&A > ES6에서 배열을 뒤집는 방법

ES6에서 배열을 뒤집는 방법

青灯夜游
풀어 주다: 2022-10-26 18:19:15
원래의
2608명이 탐색했습니다.

ES6에서는 배열 반전을 달성하기 위해 배열 객체의 reverse() 메서드를 사용할 수 있습니다. 이 메서드는 마지막 요소를 먼저 배치하고 첫 번째 요소를 마지막으로 배치하여 배열의 요소 순서를 바꾸는 데 사용됩니다. "배열.역방향()". reverse() 메서드는 원래 배열을 수정합니다. 수정하지 않으려면 확장 연산자 "..."와 함께 사용해야 하며 구문은 "[...array].reverse()입니다. ".

ES6에서 배열을 뒤집는 방법

이 튜토리얼의 운영 환경: Windows 7 시스템, ECMAScript 버전 6, Dell G3 컴퓨터.

특정 제약 조건이 있는 배열을 뒤집는 것은 면접 및 코딩 테스트에서 가장 일반적인 과제 중 하나입니다.

ES6에서는 배열 객체의 reverse() 메서드를 사용하여 배열을 뒤집을 수 있습니다. reverse() 메서드는 배열 요소의 순서를 바꾸어 첫 번째 요소가 마지막 요소가 되고 마지막 요소가 첫 번째 요소가 됩니다.

Reverse 메서드를 사용하여 JavaScript에서 배열을 뒤집는 방법

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

console.log(reversedNumbers);
// [5, 4, 3, 2, 1]
로그인 후 복사

그러나 reverse 메서드는 원래 배열을 수정한다는 점을 명심하세요. reverse 方法会修改原始数组:

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 方法来反转数组,而无需更改原始数组。

首先,通过用方括号 [] 括住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语法时,可以结合使用 slicereverse 方法。让我们现在来看。

如何使用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中反转数组

有时面试会挑战你对数组进行逆向操作,而不采用 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编写自己的反转函数

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

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

ES6에서 배열을 뒤집는 방법

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

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

function customReverse(originalArray) {
  let leftIndex = 0;
  let rightIndex = originalArray.length - 1;
}
로그인 후 복사

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

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

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--;
  }
}
로그인 후 복사

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

let myArray = [1, 2, 3, 4, 5];

customReverse(myArray);

console.log(myArray);

// output is [5, 4, 3, 2, 1]
로그인 후 복사
일부 코딩 문제에서는 원본 배열을 유지해야 할 수도 있습니다. 원본 배열이므로 원본 배열을 변경하지 않고 배열을 뒤집는 방법을 살펴보겠습니다.

Spread 연산자를 사용하여 JavaScript에서 배열을 뒤집는 방법확산 연산자(Spread)를 reverse 메서드와 함께 사용하면 원래 배열을 변경하지 않고 배열을 뒤집을 수 있습니다.

먼저 스프레드 구문을 대괄호 []로 묶어 스프레드 연산자가 반환한 요소를 새 배열에 넣습니다. 🎜rrreee🎜그런 다음 배열에서 reverse 메소드. 이렇게 하면 <code>reverse 메서드가 원래 배열 대신 새 배열에서 수행됩니다. 🎜rrreee🎜🎜🎜Note🎜: spread 메서드는 ES6 구문입니다. 이전 버전을 지원해야 함 브라우저가 ES5 구문을 사용하려는 경우 slicereverse 메서드를 함께 사용할 수 있습니다. 지금 보자. 🎜🎜🎜🎜Slice 및 Reverse 메서드를 사용하여 JavaScript에서 배열을 뒤집는 방법 🎜🎜🎜slice 메서드는 매개 변수 없이 메서드를 호출할 때 선택한 요소를 새 배열로 반환하는 데 사용됩니다. 원래 배열과 동일한 새 배열을 반환합니다(첫 번째 요소부터 마지막 ​​요소까지). 🎜🎜다음으로 새로 반환된 배열에서 reverse 메서드를 호출하므로 원래 배열이 역전되지 않습니다. 🎜rrreee🎜🎜Reverse 메서드 없이 JavaScript에서 역방향 방법 배열 변환🎜🎜 🎜때때로 인터뷰에서 reverse 메서드를 사용하지 않고 배열에서 역방향 작업을 수행하도록 요구할 수도 있습니다. 괜찮아요! 아래 예와 같이 for 루프와 배열의 push 메서드를 조합하여 사용할 수 있습니다. 🎜rrreee🎜JS에서 자신만의 역방향 함수를 작성하는 방법🎜🎜마지막으로 복사본을 만들지 않고 배열을 역방향으로 바꿔야 하는 역방향 함수를 작성해야 한다고 가정해 보겠습니다. 언뜻 보면 복잡해 보일 수도 있지만 실제로는 매우 간단하므로 걱정하지 마세요. 🎜🎜여기서 해야 할 일은 배열의 첫 번째 요소와 마지막 요소를 바꾼 다음 두 번째와 두 번째 요소 등을 모든 요소가 바뀔 때까지 바꾸는 것입니다. 🎜🎜ES6에서 배열을 뒤집는 방법🎜🎜Let 이를 수행하는 함수를 작성합니다. 🎜🎜 customReverse 함수를 작성하고 array.length - 1을 변수로 사용하고 첫 번째 인덱스는 0, 마지막 인덱스는 저장합니다. 🎜rrreee🎜다음으로, leftIndexrightIndex보다 작은 동안 실행되는 while 루프를 만듭니다. 🎜🎜이 루프 내에서 leftIndexrightIndex의 값을 바꾸면 값 중 하나를 임시 변수에 임시 저장할 수 있습니다: 🎜rrreee🎜마지막으로, leftIndex를 위로 이동하고, rightIndex를 아래로 이동하고, while 루프가 반복되면 마지막에서 두 번째 요소를 교체합니다. on: 🎜rrreee🎜 되돌릴 요소가 더 이상 없으면 루프가 즉시 중지됩니다. 홀수 배열의 경우 leftIndexrightIndex의 값이 동일하므로 교환할 필요가 없습니다. 짝수 배열의 경우 leftIndexrightIndex보다 큽니다. 🎜🎜아래와 같이 기능이 제대로 작동하는지 테스트할 수 있습니다. 🎜rrreee🎜【관련 권장 사항: 🎜javascript 비디오 튜토리얼🎜, 🎜프로그래밍 비디오🎜】🎜

위 내용은 ES6에서 배열을 뒤집는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿