Hướng dẫn reduce array of arrays javascript - giảm mảng của mảng javascript
Phương thức Show
Lần đầu tiên gọi lại, không có "giá trị trả về của tính toán trước". Nếu được cung cấp, một giá trị ban đầu có thể được sử dụng ở vị trí của nó. Mặt khác, phần tử mảng tại chỉ mục 0 được sử dụng làm giá trị ban đầu và lần lặp bắt đầu từ phần tử tiếp theo (chỉ mục 1 thay vì chỉ mục 0). Có lẽ trường hợp dễ hiểu nhất đối với 5 là trả lại tổng của tất cả các yếu tố trong một mảng:Thử nóBộ giảm tốc đi qua phần tử phần tử, ở mỗi bước, thêm giá trị mảng hiện tại vào kết quả từ bước trước (kết quả này là tổng chạy của tất cả các bước trước đó)-cho đến khi không còn phần tử nào nữa. Cú pháp
Thông số 7Một hàm "bộ giảm thiểu" được gọi với các đối số sau: 8Giá trị do cuộc gọi trước đó đến 7. Trong cuộc gọi đầu tiên, 0 nếu được chỉ định, nếu không thì giá trị của 1. 2Giá trị của phần tử hiện tại. Trong cuộc gọi đầu tiên, giá trị của 1 nếu 0 được chỉ định, nếu không thì giá trị của 5. 6Vị trí chỉ số của 2 trong mảng. Trong cuộc gọi đầu tiên, 8 nếu 0 được chỉ định, nếu không thì 0. 1Các mảng đang đi qua. 0 Tùy chọnOptionalMột giá trị mà 8 được khởi tạo ngay lần đầu tiên gọi lại. Nếu 0 được chỉ định, điều đó cũng khiến 2 được khởi tạo thành giá trị đầu tiên trong mảng. Nếu 0 không được chỉ định, 8 được khởi tạo thành giá trị thứ nhất trong mảng và 2 được khởi tạo thành giá trị thứ hai trong mảng.Giá trị trả vềGiá trị kết quả từ việc chạy chức năng gọi lại "giảm" để hoàn thành toàn bộ mảng. Ngoại lệ 9Mảng không chứa các phần tử và 0 không được cung cấp.Sự mô tảPhương thức 5 có hai đối số: hàm gọi lại và giá trị ban đầu tùy chọn. Nếu một giá trị ban đầu được cung cấp, 5 gọi chức năng gọi lại "Bộ giảm thiểu" trên mỗi phần tử trong mảng, theo thứ tự. Nếu không có giá trị ban đầu được cung cấp, 5 gọi hàm gọi lại trên mỗi phần tử trong mảng sau phần tử đầu tiên. 7 chỉ được gọi cho các chỉ mục mảng đã gán các giá trị. Nó không được gọi cho các khe trống trong các mảng thưa thớt. 5 Trả về giá trị được trả về từ hàm gọi lại trên lần lặp cuối cùng của mảng. 5 là một khái niệm trung tâm trong lập trình chức năng, trong đó không thể thay đổi bất kỳ giá trị nào, vì vậy để tích lũy tất cả các giá trị trong một mảng, người ta phải trả về giá trị tích lũy mới trên mỗi lần lặp. Công ước này tuyên truyền đến 5 của JavaScript: Bạn nên sử dụng các phương thức sao chép hoặc sao chép khác khi có thể tạo các mảng và đối tượng mới làm bộ tích lũy, thay vì biến đổi phương thức hiện có. Nếu bạn quyết định đột biến bộ tích lũy thay vì sao chép nó, hãy nhớ vẫn trả về đối tượng đã sửa đổi trong cuộc gọi lại hoặc lần lặp tiếp theo sẽ nhận được không xác định.Khi nào không sử dụng giảm ()Các chức năng đệ quy như 5 có thể mạnh mẽ nhưng đôi khi khó hiểu, đặc biệt là đối với các nhà phát triển JavaScript ít kinh nghiệm. Nếu mã trở nên rõ ràng hơn khi sử dụng các phương thức mảng khác, các nhà phát triển phải cân nhắc sự đánh đổi khả năng đọc đối với các lợi ích khác của việc sử dụng 5. Trong trường hợp 5 là sự lựa chọn tốt nhất, tài liệu và đặt tên biến ngữ nghĩa có thể giúp giảm thiểu những hạn chế dễ đọc.Hành vi trong các đột biến mảngBản thân phương thức 5 không làm thay đổi mảng nó được sử dụng. Tuy nhiên, có thể mã bên trong hàm gọi lại để biến đổi mảng. Đây là những kịch bản có thể xảy ra của các đột biến mảng và cách 5 hành xử trong các kịch bản này:
Trường hợp cạnhNếu mảng chỉ có một phần tử (bất kể vị trí) và không được cung cấp 0 hoặc nếu 0 được cung cấp nhưng mảng trống, giá trị solo sẽ được trả về mà không gọi 7.Nếu 0 được cung cấp và mảng không trống, thì phương thức giảm sẽ luôn gọi chức năng gọi lại bắt đầu từ INDEX 0.Nếu 0 không được cung cấp thì phương pháp giảm sẽ hoạt động khác nhau cho các mảng có chiều dài lớn hơn 1, bằng 1 và 0, như được hiển thị trong ví dụ sau:
Phương pháp 5 là chung chung. Nó chỉ mong đợi giá trị 2 có thuộc tính 3 và các thuộc tính được khóa.Ví dụLàm thế nào giảm () hoạt động mà không có giá trị ban đầuMã dưới đây cho thấy những gì xảy ra nếu chúng ta gọi 5 với một mảng và không có giá trị ban đầu.
Cuộc gọi lại sẽ được gọi bốn lần, với các đối số và các giá trị trả về trong mỗi cuộc gọi như sau: Tham số 1 không bao giờ thay đổi trong quá trình - nó luôn luôn là 6. Giá trị được trả về bởi 5 sẽ là của lệnh gọi gọi lại cuối cùng ( 8).Làm thế nào giảm () hoạt động với giá trị ban đầuỞ đây chúng tôi giảm cùng một mảng bằng cách sử dụng cùng một thuật toán, nhưng với 0 của 0 đã chuyển đối số thứ hai cho 5:
Cuộc gọi lại sẽ được gọi năm lần, với các đối số và các giá trị trả về trong mỗi cuộc gọi như sau: Giá trị được trả về bởi 5 trong trường hợp này sẽ là 3.Tổng các giá trị trong một mảng đối tượngĐể tổng hợp các giá trị có trong một mảng các đối tượng, bạn phải cung cấp một 0, để mỗi mục đi qua chức năng của bạn.must supply an 0, so that each item passes through your function.
Làm phẳng một mảng mảng
Đếm các phiên bản của các giá trị trong một đối tượng
Nhóm đối tượng bởi một tài sản
Các mảng kết nối có trong một mảng các đối tượng bằng cách sử dụng cú pháp lan truyền và initValue
Xóa các mục trùng lặp trong một mảngLưu ý: Hiệu ứng tương tự có thể đạt được với 5 and 6 as 7 with better performance.
Thay thế .filter (). Map () bằng .reduce ()Sử dụng 8 sau đó 9 đi qua mảng hai lần, nhưng bạn có thể đạt được hiệu ứng tương tự trong khi chỉ đi qua một lần với 5, do đó hiệu quả hơn. (Nếu bạn thích các vòng lặp 1, bạn có thể lọc và ánh xạ trong khi đi qua một lần với 2.) 0Chạy những lời hứa theo trình tự 1Thành phần chức năng cho phép đường ống 2Sử dụng giảm () với các mảng thưa thớt 5 bỏ qua các phần tử bị thiếu trong các mảng thưa thớt, nhưng nó không bỏ qua các giá trị 4. 3Gọi giảm () trên các đối tượng không phải làPhương thức 5 đọc thuộc tính 3 của 2 và sau đó truy cập vào từng chỉ mục số nguyên. 4Thông số kỹ thuật
Tính tương thích của trình duyệt webBảng BCD chỉ tải trong trình duyệt Xem thêmLàm thế nào để bạn làm phẳng một mảng mảng?Các phương pháp khác nhau để làm phẳng một mảng.. một. Sử dụng Concat () và Ứng dụng () Let FlatArray = []. liên kết. .... b. Sử dụng toán tử lây lan. Đặt FlatArray = []. Concat (... mảng); // Đầu ra: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15] .... c. Sử dụng phương pháp giảm. Đặt FlatArray = mảng. Giảm ((acc, curval) => {return acc .. Bạn có thể giảm một mảng các đối tượng trong JavaScript không?Mảng giảm trong JavaScript là một phương thức được xác định trước được sử dụng để giảm một mảng thành một giá trị duy nhất bằng cách chuyển hàm gọi lại trên mỗi phần tử của mảng. Nó chấp nhận một hàm được thực thi trên tất cả các mục của mảng được chỉ định trong chuỗi từ trái sang phải. Giá trị đơn được trả về được lưu trữ trong bộ tích lũy.. It accepts a function executed on all the items of the specified array in the left-to-right sequence. The returned single value is stored in the accumulator.
Làm thế nào để bạn tạo một mảng mảng thành một mảng?Sử dụng toán tử lây lan, chúng ta có thể sử dụng toán tử lây lan trên các mảng trong một mảng theo nghĩa đen ([]) để hợp nhất chúng.Hãy xem nó với một ví dụ.Đầu tiên, chúng tôi sẽ lấy hai mảng, ARR1 và ARR2.Sau đó hợp nhất các mảng bằng toán tử lây lan (...) trong một mảng theo nghĩa đen.use the spread operator on arrays within an array literal( [] ) to merge them. Let's see it with an example. First, we will take two arrays, arr1 and arr2 . Then merge the arrays using the spread operator( ... ) within an array literal.
Mảng có thể giảm trả về một mảng khác không?Phương thức giảm () áp dụng hàm đối với bộ tích lũy và từng giá trị của mảng (từ từ trái sang phải) để giảm nó xuống một giá trị duy nhất..you can manipulate reduce to return a new array, it's general usage is to reduce an array to a single value. |