Tree 형태의 Object를 하나의 Array로 변환하는 함수이다.
/*
변환 전
parent : {
a : a,
children : [{b : b}, {c : c}]
}
변환 후
[{a, a}, {b : b}, {c : c}]
*/
function convertObjectToArray(tree) {
const list = [];
function pushItem(node) {
if (!node) return;
node.forEach(item => {
list.push(item);
const childrenKeyList = Object.keys(item).filter(key => Array.isArray(item[key]));
if (childrenKeyList.length > 0) {
childrenKeyList.forEach(childKey => {
const child = cloneDeep(item[childKey]);
delete item[childKey];
pushItem(child);
});
}
});
}
pushItem(cloneDeep(tree));
return list;
}