Đảo ngược mảng con JavaScript
Một câu hỏi phỏng vấn hoặc thử thách JavaScript điển hình liên quan đến việc đảo ngược mảng tại chỗ và không đúng chỗ. Cụ thể, hãy giải quyết vấn đề này từ Eloquent JavaScript, 2nd Edition Show Write two functions reverseArray and reverseArrayInPlace. The first, reverseArray, takes an array as an argument and produces a new array that has the same elements in the inverse order. The second, reverseArrayInPlace, does what the reverse method does: it modifies the array given as argument in order to reverse its elements. Neither may use the standard reverse method. Đó là người khởi xướng. bạn không thể sử dụng phương pháp var array1 = ["yes", "no", "maybe", "always", "sometimes", "never", "if"]; 5Tôi đã giải quyết vấn đề này trước đây, nhưng bây giờ tôi đang quay lại học JavaScript sau một thời gian nghỉ ngơi, tôi phải mất một lúc để hiểu lại vấn đề này. Đặc biệt đảo ngược mảng tại chỗ. Để giúp tôi hiểu rõ hơn và suy nghĩ thấu đáo vấn đề này tôi quyết định viết bài này Đảo ngược một mảng Out-of-Place Để bắt đầu, hãy tạo hai mảng var array1 = ["yes", "no", "maybe", "always", "sometimes", "never", "if"]; Đối với hàm var array1 = ["yes", "no", "maybe", "always", "sometimes", "never", "if"]; 6, nếu chúng ta định tạo một mảng mới, chúng ta cần một mảng trống để điền vào sauvar newArray = []; Viết các bước ra bằng mã giả// 1) I want to take the last element of the array, then add it to the newArray. Trước tiên, hãy đến với vòng lặp var array1 = ["yes", "no", "maybe", "always", "sometimes", "never", "if"]; 7 của chúng tôi. Để bắt đầu ở cuối mảng, chúng tôi muốn đặt var array1 = ["yes", "no", "maybe", "always", "sometimes", "never", "if"]; 8 bằng độ dài của mảng trừ đi 1, vì chỉ số của một mảng luôn bắt đầu từ 0________số 8_______Ví dụ, var array1 = ["yes", "no", "maybe", "always", "sometimes", "never", "if"]; 9 sẽ cho chúng ta 7 vì có bảy phần tử trong đó. Tuy nhiên, chỉ số của mỗi là 0, 1, 2, 3, 4, 5 và 6. Vì vậy, để bắt đầu từ phần tử có chỉ số là 6, chúng ta cần lấy độ dài của mảng và trừ đi 1Viết ra vòng lặp var array1 = ["yes", "no", "maybe", "always", "sometimes", "never", "if"]; 7 đầy đủ của chúng tôi, chúng tôi nhận đượcfor (var i = arr.length - 1; i >= 0; i--) Nói cách khác, chúng ta đang trừ 1 từ chỉ mục với mỗi vòng lặp cho đến khi var array1 = ["yes", "no", "maybe", "always", "sometimes", "never", "if"]; 8 lớn hơn hoặc bằng 0, phần đầu của mảng. (Sử dụng var newArray = []; 2 làm tên tham số trong hàm bên dưới cũng giống như sử dụng var newArray = []; 3. Đừng để điều đó ném bạn. )function reverseArray(arr) { var newArray = []; 4 đại diện cho từng phần tử tại chỉ mục tương ứng của nó. Ở vòng lặp đầu tiên, var newArray = []; 4 là phần tử var newArray = []; 6. Trên mỗi vòng lặp, chúng tôi sử dụng phương thức var newArray = []; 7 để 'đẩy' var newArray = []; 4 theo nghĩa đen đến cuối của var newArray = []; 9Truyền // 1) I want to take the last element of the array, then add it to the newArray. 0 vào hàm này, chúng ta sẽ nhận đượcreverseArray(array1)⊳ ["if", "never", "sometimes", "always", "maybe", "no", "yes"] Đảo ngược một mảng tại chỗ Mọi thứ ngay lập tức trở nên phức tạp hơn đối với tôi khi cố gắng đảo ngược một mảng tại chỗ. Ban đầu, khi tôi cố gắng giải quyết vấn đề này, tôi đã cố gắng lấy phần tử đầu tiên bằng cách sử dụng // 1) I want to take the last element of the array, then add it to the newArray. 1, đặt phần tử đó thành một biến có tên là // 1) I want to take the last element of the array, then add it to the newArray. 2, sau đó sử dụng var newArray = []; 7 để thêm nó vào cuối mảng ban đầu. Nhưng vấn đề mà tôi gặp phải là tôi chỉ đảo ngược phần tử đầu tiên và phần tử cuối cùng lặp đi lặp lại với mỗi vòng lặp, bởi vì // 1) I want to take the last element of the array, then add it to the newArray. 1 chỉ loại bỏ các phần tử ở 'chỉ số 0' và // 1) I want to take the last element of the array, then add it to the newArray. 5 ở cuối cùngNgoài ra còn có vấn đề về nơi bắt đầu và kết thúc vòng lặp var array1 = ["yes", "no", "maybe", "always", "sometimes", "never", "if"]; 7Tuy nhiên, trước khi đi xa hơn, hãy viết ra vấn đề bằng mã giả // 1) I know I need to loop through the array. But before figuring out where to start or end I need to think about how I will actually reverse the elements in the array. Vì vậy, về vòng lặp var array1 = ["yes", "no", "maybe", "always", "sometimes", "never", "if"]; 7 của chúng tôi, tôi có thể bắt đầu ở đầu hoặc cuối mảng và kết thúc khi var array1 = ["yes", "no", "maybe", "always", "sometimes", "never", "if"]; 8 bằng một nửa chiều dài của mảngCách ban đầu tôi nghĩ để làm điều này là for (var i = 0; i <= (arr.length / 2); i++) Sau đó, tôi đặt phần tử đầu tiên bằng một biến có tên là // 1) I want to take the last element of the array, then add it to the newArray. 9, sau đó đặt phần tử đầu tiên bằng phần tử cuối cùng và phần tử cuối cùng bằng phần tử đầu tiên (// 1) I want to take the last element of the array, then add it to the newArray. 9)Đây là giao diện của nó var array1 = ["yes", "no", "maybe", "always", "sometimes", "never", "if"]; 0Vì vậy, với mỗi vòng lặp, // 1) I want to take the last element of the array, then add it to the newArray. 9 sẽ được đặt lại bằng phần tử tiếp theo trong mảngvar i = array.length - 1 2 chỉ là một cách nói
Cố gắng nó theo cách này, có vẻ như var array1 = ["yes", "no", "maybe", "always", "sometimes", "never", "if"]; 1Nhưng khi thử nghiệm điều này, có điều gì đó kỳ lạ xảy ra với các mảng có độ dài chẵn, chẳng hạn như for (var i = arr.length - 1; i >= 0; i--) 3var array1 = ["yes", "no", "maybe", "always", "sometimes", "never", "if"]; 29 và 5 được đảo ngược ở giữa Trong trường hợp mảng của chúng ta là một số lẻ, chẳng hạn như // 1) I want to take the last element of the array, then add it to the newArray. 0, sử dụng for (var i = arr.length - 1; i >= 0; i--) 5 sẽ hiệu quả, vì var array1 = ["yes", "no", "maybe", "always", "sometimes", "never", "if"]; 9 là 3. 5 và vòng lặp sẽ tiếp tục miễn là var array1 = ["yes", "no", "maybe", "always", "sometimes", "never", "if"]; 8 nhỏ hơn hoặc bằng 3. 5. Nhưng nếu độ dài của chúng ta là 8, như trong for (var i = arr.length - 1; i >= 0; i--) 3, thì vòng lặp sẽ dừng ở chỉ số 4, thực tế là 1 chỉ số đã qua nơi chúng ta muốn dừng. Bởi vì chỉ mục bắt đầu từ 0, chúng tôi thực sự muốn dừng lại ở 3Để khắc phục điều này, chúng ta có thể trừ 1 từ độ dài của mảng trước khi chia cho 2. Để có biện pháp tốt, chúng ta có thể ném for (var i = arr.length - 1; i >= 0; i--) 9 ở phía trước để làm tròn số thập phân xuống số nguyên gần nhấtvar array1 = ["yes", "no", "maybe", "always", "sometimes", "never", "if"]; 3Xem lại
Tôi là một tân binh JavaScript, vì vậy nếu bạn có cách nào hiệu quả hơn để thực hiện việc này, tôi rất muốn nhận được phản hồi từ bạn trong phần nhận xét bên dưới Làm cách nào để đảo ngược mảng trong JavaScript?Phương thức đảo ngược mảng JavaScript () . Sự miêu tả. Phương thức đảo ngược mảng Javascript() đảo ngược phần tử của một mảng. . cú pháp. Cú pháp của nó như sau - mảng. đảo ngược(); Giá trị trả về. Trả về giá trị đơn bị đảo ngược của mảng Thí dụ. Hãy thử ví dụ sau. . đầu ra. Mảng đảo ngược là. 3,2,1,0 Làm cách nào để đảo ngược một mảng mà không sử dụng một mảng khác trong JavaScript?Đảo ngược một mảng bằng JavaScript . Sử dụng phương pháp đảo ngược Sử dụng vòng lặp For giảm dần Sử dụng Phương thức Unshift() Không sử dụng mảng mới hoặc phương thức reverse() Làm cách nào để đảo ngược đối tượng trong JavaScript?Phương thức đảo ngược JavaScript (). đối tượng mảng
. e. phần tử mảng đầu tiên trở thành phần tử cuối cùng và phần tử cuối cùng trở thành phần tử đầu tiên. The reverse() method is used to reverse the order of the elements in an array, i.e. first array element becomes the last and the last becomes the first.
Làm cách nào để đảo ngược bản đồ trong JavaScript?Bản đồ mảng tiến trình JavaScript đảo ngược . Đảo ngược mảng trước Map() Vì JS đảo ngược mảng ban đầu, chúng ta cần tạo một bản sao mới mà chúng ta có thể đảo ngược và gọi map trên đó. . Truy cập các phần tử theo thứ tự đảo ngược. const ánh xạ = mảng. . Đảo ngược bản đồ () và giữ nguyên thứ tự |