Học Javascript - Object javascript - Triển khai flatten trong Object

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".

Có thể bạn đã bị missing