我的对象具有有关表(行和列)位置的元数据
{a:{row:0,col:0,data:{}},b:{row:1,col:0,data:{}},c:{row:1,col:1,data:{}},d:{row:2,col:0,data:{}},e:{row:2,col:1,data:{}}}
我想对对象进行重新排序以进行迭代并将其呈现为表(我正在使用React,但这并不重要)。
所以我的最终对象应该是这样的:
[[{key:"a",data:{}}],[{key:"b",data:{}},{key:"c",data:{}}],[{key:"d",data:{}},{key:"e",data:{}}]]
我尝试(很多)使它优雅而美观,但没有成功(循环的结果太多),我相信有一些优雅的方法可以实现。
答案 0 :(得分:1)
只需减少条目并以row
/ col
作为嵌套数组的目标即可。
var data = { a: { row: 0, col: 0, data: {} }, b: { row: 1, col: 0, data: {} }, c: { row: 1, col: 1, data: {} }, d: { row: 2, col: 0, data: {} }, e: { row: 2, col: 1, data: {} } },
result = Object.entries(data).reduce((r, [key, { row, col, data }]) => {
r[row] = r[row] || [];
r[row][col] = { key, data };
return r;
}, []);
console.log(result);