Nội dung bài viết
Video học lập trình mỗi ngày
Flatten JavaScript object chính là biến hóa keys và values trong Object đó trở thành một Object có chiều sâu hay còn gọi là deep Object. Ngoài đệ quy thì chúng ta còn cách sau.
Flatten JavaScript Object
Trong nhiều tình huống ta sẽ sử dụng flatten
như tình huống dưới đây. Ví dụ tôi muốn:
My input:
{
"user": {
"key_value_map": {
"CreatedDate": "123424",
"Department": {
"Name": "XYZ"
}
}
}
}
Expected output:
{
"user.key_value_map.CreatedDate": "123424",
"user.key_value_map.Department.Name": "XYZ"
}
Thì có cách nào: Hãy xem xét cách làm sau:
function flattenObject(ob) {
var toReturn = {};
for (var i in ob) {
if (!ob.hasOwnProperty(i)) continue;
if ((typeof ob[i]) == 'object' && ob[i] !== null) {
var flatObject = flattenObject(ob[i]);
for (var x in flatObject) {
if (!flatObject.hasOwnProperty(x)) continue;
toReturn[i + '.' + x] = flatObject[x];
}
} else {
toReturn[i] = ob[i];
}
}
return toReturn;
}
Có thể tham khảo thêm nhiều cách trong Stackoverflow. Và còn nhiều tình huống khác phải sử dụng như là "Partial update of a subdocument with nodejs/mongoose".