Trong mảng trên, phần tử đầu tiên chỉ sâu một cấp, trong khi phần tử thứ hai sâu hai cấp
Bạn có thể chỉ cần sử dụng phương pháp Array.prototype.flat[]
để làm phẳng mảng. Ví dụ: để làm phẳng nó hoàn toàn, bất kể mảng sâu bao nhiêu cấp, bạn có thể thực hiện như sau
// ES2019+ const flattened = users.flat[Infinity]; console.log[flattened]; /* [ { id: 1, name: 'John' }, { id: 3, name: 'Wayne' }, { id: 7, name: 'Melissa' }, { id: 2, name: 'David' }, ] */
Nếu bạn chỉ muốn làm phẳng mảng đến một mức lồng nhau cụ thể, thì bạn có thể chỉ định nó làm đối số đầu tiên cho phương thức Array.prototype.flat[]
, chẳng hạn, như vậy
// ES2019+ const flattened = users.flat[4]; // flatten array 4-levels deep console.log[flattened]; /* [ { id: 1, name: 'John' }, { id: 3, name: 'Wayne' }, { id: 7, name: 'Melissa' }, { id: 2, name: 'David' }, ] */
Nếu bạn không chỉ định bất kỳ đối số nào cho phương thức Array.prototype.flat[]
, thì theo mặc định, nó sẽ chỉ làm phẳng sâu một cấp độ. Ví dụ
// ES2019+ const flattened = users.flat[]; console.log[flattened]; /* [ { id: 1, name: 'John' }, { id: 3, name: 'Wayne' }, [ { id: 7, name: 'Melissa' }, { id: 2, name: 'David' } ], ] */
Nếu bạn chưa hỗ trợ ES2019, thì bạn có thể sử dụng các cách tương thích ngược khác để làm phẳng một mảng
Hy vọng bạn tìm thấy bài viết này hữu ích. Nó được xuất bản vào ngày 08 tháng 5 năm 2021. Hãy thể hiện tình yêu và sự ủng hộ của bạn bằng cách
Làm phẳng một đối tượng javascript là một câu hỏi rất phổ biến trong Phỏng vấn giao diện người dùng
Có thể dễ dàng làm phẳng đối tượng được lồng sâu bằng cách sử dụng kỹ thuật đệ quy
Mã phụ thuộc vào cách một đối tượng phẳng sẽ trông như thế nào
// input
var user = {
name: "Vishal",
address: {
primary: {
house: "109",
street: {
main: "21",
cross: "32"
}
}
}
};
//output
{
user_name: "Vishal",
user_address_primary_house: "109",
user_address_primary_street_main: "21",
user_address_primary_street_cross: "32",
}
thuật toán
- Lặp lại các khóa của đối tượng
- Nối tên khóa con vào tên khóa cha
- Nếu giá trị của khóa con là một đối tượng, hãy gọi lại cùng một chức năng
- Khác gán khóa cho giá trị mới
Mã số
var flattendObj = {};
const flattenObject = [obj, keyName] => {
Object.keys[obj].forEach[key => {
var newKey = `${keyName}_${key}`
if [typeof obj[key] === "object"] {
// calling the function again
flattenObject[obj[key], newKey];
} else {
flattendObj[newKey] = obj[key];
}
}];
};
console.log[flattendObj];
Đệ quy là phép thuật, nếu bạn biết đâu là điểm dừng. 🌀
Theo dõi tôi để biết thêm nội dung như vậy
Nhằm mục đích đăng giải pháp của những vấn đề như vậy hàng ngày. 🔥
Thách thức tôi với nhiều vấn đề hơn. 💪