Mã hóa: Làm phẳng một mảng trong Javascript
Làm phẳng mảng: Làm phẳng một mảng có nghĩa là lấy một mảng có thể chứa các mảng lồng nhau (nghĩa là các mảng bên trong các mảng) và chuyển đổi nó thành một mảng một chiều. Nói cách khác, nó liên quan đến việc loại bỏ tất cả các mảng lồng nhau và kết hợp các phần tử của chúng thành một mảng duy nhất.
Chúng tôi sẽ thảo luận về nhiều giải pháp.
Giải pháp 1: Sử dụng đệ quy
Mã định nghĩa một hàm được gọi FlattenArraylà lấy một mảng làm đối số. Mục tiêu của hàm là lấy một mảng lồng nhau và trả về một phiên bản phẳng của nó. Ví dụ: nếu đầu vào là [1, 2, [3, 4]], hàm sẽ trả về [1, 2, 3, 4].
Hàm bắt đầu bằng cách tạo một mảng trống được gọi, mảng này sẽ được sử dụng để lưu trữ phiên bản phẳng của mảng đầu vào. Sau đó, nó đi vào một forvòng lặp sẽ lặp qua từng phần tử trong mảng đầu vào.
Đối với mỗi phần tử trong mảng đầu vào, hàm sẽ kiểm tra xem phần tử đó có phải là một mảng hay không bằng cách sử dụng phương Array.isArraythức. Nếu phần tử là một mảng, thì hàm gọi chính nó theo cách đệ quy với mảng lồng nhau làm đối số và sử dụng phương concatthức để kết hợp mảng lồng nhau được làm phẳng với mảng flatArrayđược tạo ở đầu hàm.
Nếu phần tử không phải là một mảng, hàm chỉ cần đẩy phần tử đó vào flatArray.
Sau khi tất cả các phần tử trong mảng đầu vào đã được xử lý, hàm trả về flatArray.
Mã hoàn chỉnh:
// Flatten Array
function FlattenArray(arr) {
var flatArray = []
for (let i = 0; i < arr.length; i++) {
if (Array.isArray(arr[i])) {
flatArray = flatArray.concat(FlattenArray(arr[i]))
} else {
flatArray.push(arr[i])
}
}
return flatArray
}
var arr = [1, 2, 3, 4, [5, 6, [7, 8]], [9]]
console.log(FlattenArray(arr))
Giải pháp 2: Sử dụng phương pháp rút gọn
function flattenArray(arr) {
return arr.reduce(function(flatArray, current) {
if (Array.isArray(current)) {
return flatArray.concat(flattenArray(current));
} else {
return flatArray.concat(current);
}
}, []);
}
var arr = [1, 2, 3, 4, [5, 6, [7, 8]], [9]];
console.log(flattenArray(arr)); // [1, 2, 3, 4, 5, 6, 7, 8, 9]
Phương reducethức này nhận hai đối số: hàm gọi lại và giá trị ban đầu cho bộ tích lũy. Trong trường hợp này, bộ tích lũy là một mảng trống sẽ được sử dụng để xây dựng phiên bản phẳng của mảng đầu vào.
Hàm gọi lại nhận hai đối số: giá trị hiện tại đang được xử lý (lần lượt sẽ là từng phần tử của mảng đầu vào) và giá trị hiện tại của bộ tích lũy.
Bên trong hàm gọi lại, chúng tôi kiểm tra xem giá trị hiện tại có phải là một mảng hay không bằng cách sử dụng Array.isArray. Nếu nó là một mảng, chúng ta gọi flattenArrayđệ quy để làm phẳng mảng lồng nhau và sau đó nối mảng đã làm phẳng với bộ tích lũy bằng concatphương thức này.
Nếu giá trị hiện tại không phải là một mảng, chúng ta chỉ cần nối nó với bộ tích lũy bằng cách sử dụng concat.
Cuối cùng, reducephương thức trả về giá trị cuối cùng của bộ tích lũy, đây sẽ là phiên bản phẳng của mảng đầu vào.
Với mã này, bạn sẽ nhận được kết quả giống như trước đây: [1, 2, 3, 4, 5, 6, 7, 8, 9].
Nếu bạn muốn tìm hiểu thêm về viết mã trong Javascript, hãy nhớ theo dõi tôi để biết thêm các đoạn mã và ví dụ. Tôi sẽ chia sẻ thông tin có giá trị và mẹo về cách làm chủ ngôn ngữ và cải thiện kỹ năng của bạn với tư cách là nhà phát triển. Vì vậy, hãy theo dõi để biết thêm thông tin cập nhật và chúng ta hãy tiếp tục học cùng nhau.
Cảm ơn đã đọc. Chúc bạn học tập vui vẻ
Giải thích về luồng và đa xử lý trong Python Cách dễ nhất để truy cập cơ sở dữ liệu trong JAVA Câu hỏi phỏng vấn dựa trên luồng Java8 thường gặp nhất - Phần 1 Apache Maven - Tóm tắt
![Dù sao thì một danh sách được liên kết là gì? [Phần 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































