跳到主要内容

2675.将对象数组转换为矩阵

链接:2675.将对象数组转换为矩阵
难度:Hard
标签:
简介:编写一个函数,将对象数组 arr 转换为矩阵 m 。

题解 1 - typescript

  • 编辑时间:2023-05-16
  • 执行用时:360ms
  • 内存消耗:67.9MB
  • 编程语言:typescript
  • 解法介绍:先深度遍历拿所有的Key,再对每个对象尝试读key。
const isObject = (o: unknown): o is object => o instanceof Object;
function jsonToMatrix(arr: any[]): (string | number | boolean | null)[][] {
const keySet = new Set<string>();
for (const item of arr) findKey(item);
keySet.delete('');
const keys = Array.from(keySet.keys()).sort();
return [keys, ...arr.map(item => keys.map(k => get(item, k)))];
function findKey(item: any[] | object, key = '') {
if (isObject(item))
for (const k of Object.keys(item)) findKey(item[k], key ? key + '.' + k : `${k}`);
else keySet.add(key);
}
function get(item: object, k: string): any {
for (const nextK of k.split('.'))
if (!isObject(item) || item[nextK] === undefined) return '';
else item = item[nextK];
return isObject(item) ? '' : item;
}
}