一对多数据库返回的数据JS怎么处理成多层
时间: 2023-12-06 15:05:15 浏览: 108
你可以将一对多数据库返回的数据存储在一个对象中,其中每个属性对应一个主表记录,属性的值是一个数组,数组中包含对应主表记录的所有从表记录。例如,假设你有一个订单表和一个订单详情表,每个订单可以对应多个订单详情,可以这样处理数据:
```javascript
const data = {
order1: {
id: 1,
customer: 'Alice',
details: [
{ id: 1, product: 'Product A', quantity: 2 },
{ id: 2, product: 'Product B', quantity: 1 }
]
},
order2: {
id: 2,
customer: 'Bob',
details: [
{ id: 3, product: 'Product C', quantity: 3 }
]
}
};
```
然后,你可以使用循环和嵌套来遍历和展示这个数据,例如:
```javascript
for (const orderKey in data) {
const order = data[orderKey];
console.log(`Order ${order.id} for ${order.customer}:`);
for (const detail of order.details) {
console.log(`- ${detail.quantity} x ${detail.product} (ID ${detail.id})`);
}
}
```
这将输出:
```
Order 1 for Alice:
- 2 x Product A (ID 1)
- 1 x Product B (ID 2)
Order 2 for Bob:
- 3 x Product C (ID 3)
```
你也可以使用递归函数来处理多层数据,例如:
```javascript
function displayData(data) {
for (const key in data) {
const value = data[key];
if (Array.isArray(value)) {
console.log(`- ${key}:`);
for (const item of value) {
displayData(item);
}
} else if (typeof value === 'object') {
console.log(`${key}:`);
displayData(value);
} else {
console.log(` ${key}: ${value}`);
}
}
}
// 使用示例
displayData(data);
```
这将输出:
```
order1:
id: 1
customer: Alice
details:
- id: 1
product: Product A
quantity: 2
- id: 2
product: Product B
quantity: 1
order2:
id: 2
customer: Bob
details:
- id: 3
product: Product C
quantity: 3
```
阅读全文
相关推荐


















