一个表格中的数据,这个数据有本身的id也有自己的父id,更具这个表格生成一个js对象的实现
时间: 2024-03-01 22:54:43 浏览: 45
js 实现获取对应数据生成 .sql建表文件
好的,这个问题我可以帮你解答。根据你的描述,我理解你需要实现一个将表格数据转换成 JavaScript 对象的函数。
假设你的表格数据长这样:
```
id | parent_id | name
1 | null | A
2 | 1 | B
3 | 2 | C
4 | 1 | D
```
那么对应的 JavaScript 对象可以这样表示:
```javascript
{
"1": {
"id": 1,
"parent_id": null,
"name": "A",
"children": [
{
"id": 2,
"parent_id": 1,
"name": "B",
"children": [
{
"id": 3,
"parent_id": 2,
"name": "C",
"children": []
}
]
},
{
"id": 4,
"parent_id": 1,
"name": "D",
"children": []
}
]
}
}
```
下面是一个实现这个转换的函数:
```javascript
function tableToObj(table) {
const obj = {};
table.forEach(row => {
const id = row.id;
const parentId = row.parent_id;
const name = row.name;
if (!obj[id]) {
obj[id] = { id, parent_id: parentId, name, children: [] };
} else {
obj[id].name = name;
}
if (parentId) {
if (!obj[parentId]) {
obj[parentId] = { id: parentId, children: [] };
}
obj[parentId].children.push(obj[id]);
}
});
return obj;
}
```
这个函数接受一个数组 `table`,每个元素代表表格中的一行数据。函数会遍历这个数组,将每一行数据转换成一个 JavaScript 对象,并根据父子关系将它们组织成一个树形结构。最后返回一个包含所有对象的 JavaScript 对象。
使用方法:
```javascript
const table = [
{ id: 1, parent_id: null, name: 'A' },
{ id: 2, parent_id: 1, name: 'B' },
{ id: 3, parent_id: 2, name: 'C' },
{ id: 4, parent_id: 1, name: 'D' }
];
const obj = tableToObj(table);
console.log(obj);
```
希望这个函数能够解决你的问题。
阅读全文
相关推荐
晚上突然看到以前做asp时写的一个根据数据库数据自动生成表格的程序。 要求是: 1,对于空内容,应该写为” ”,否则在ie会显示的很变态(ie当作该单元格不存在)。 2,当输出数据条数不等于表格的“长X宽”时,用” ”自动填补最后一行空余的地方。 其实也很简单,当时做asp时用了一个较复杂的算法(下面代码中MakeTable2),今天又想到一个更容易理解的算法(MakeTable1),今天用js实现了下,不过郁闷的是感觉效率上都一样,这样还是用第一个比较好(容易理解,代码少)。 代码如下:
Untitled 1
.sty