Description
null
Solution
TypeScript
function jsonToMatrix(arr: any[]): (string | number | boolean | null)[][] {
const flattenObject = (obj: any, prefix = ""): Record<string, any> => {
let result: Record<string, any> = {};
for (let key in obj) {
let value = obj[key];
if (typeof value === "object" && value !== null) {
let flattened = flattenObject(value, prefix + key + ".");
result = { ...result, ...flattened };
} else {
result[prefix + key] = value;
}
}
return result;
};
let flattenedArr = arr.map(obj => flattenObject(obj));
let columnSet = new Set<string>();
flattenedArr.forEach(obj => {
Object.keys(obj).forEach(key => columnSet.add(key));
});
let columns = Array.from(columnSet).sort();
let matrix: (string | number | boolean | null)[][] = [columns];
flattenedArr.forEach(obj => {
let row = columns.map(key => (obj[key] !== undefined ? obj[key] : ""));
matrix.push(row);
});
return matrix;
}