项目使用:nodejs, expressjs和数据库MSSQL 2000 with node-mssql
我有一个从查询表中得到的对象示例如下。对象的长度将根据不同的"模型代码"而变化
[
{
poNumber: '002',
modelCode: 'SM-A536EZWHXID',
orderQuantity: '1',
invoiceQuantity: null,
price: '1000',
totalPrice: '1000',
receivedDate: 'Mar 26 2023 3:26AM',
status: null,
remarks: null
},
{
poNumber: '002',
modelCode: 'SM-A536EZWHXID',
orderQuantity: '1',
invoiceQuantity: null,
price: '1000',
totalPrice: '1000',
receivedDate: 'Mar 26 2023 3:26AM',
status: null,
remarks: null
},
{
poNumber: '002',
modelCode: 'SM-A536EZOGXID',
orderQuantity: '1',
invoiceQuantity: null,
price: '1000',
totalPrice: '1000',
receivedDate: 'Mar 26 2023 3:26AM',
status: null,
remarks: null
}
]
与相应的Json
[
{
"poNumber": "002",
"modelCode": "SM-A536EZWHXID",
"orderQuantity": "1",
"invoiceQuantity": null,
"price": "1000",
"totalPrice": "1000",
"receivedDate": "Mar 26 2023 3:26AM",
"status": null,
"remarks": null
},
{
"poNumber": "002",
"modelCode": "SM-A536EZWHXID",
"orderQuantity": "1",
"invoiceQuantity": null,
"price": "1000",
"totalPrice": "1000",
"receivedDate": "Mar 26 2023 3:26AM",
"status": null,
"remarks": null
},
{
"poNumber": "002",
"modelCode": "SM-A536EZOGXID",
"orderQuantity": "1",
"invoiceQuantity": null,
"price": "1000",
"totalPrice": "1000",
"receivedDate": "Mar 26 2023 3:26AM",
"status": null,
"remarks": null
}
]
但是客户端需要这种格式的Json
{
"poNumber": "002",
"items : [
{
"modelCode": "SM-A536EZWHXID",
"orderQuantity": "1",
"invoiceQuantity": null,
"price": "1000",
"totalPrice": "1000",
"receivedDate": "Mar 26 2023 3:26AM",
},
{
"modelCode": "SM-A536EZWHXID",
"orderQuantity": "1",
"invoiceQuantity": null,
"price": "1000",
"totalPrice": "1000",
"receivedDate": "Mar 26 2023 3:26AM",
},
{
"modelCode": "SM-A536EZOGXID",
"orderQuantity": "1",
"invoiceQuantity": null,
"price": "1000",
"totalPrice": "1000",
"receivedDate": "Mar 26 2023 3:26AM",
}
],
"status": null,
"remarks": null
}
它看起来很像分组到:
标题部分:"身体部分:带有标签"物品";及其商品的"modelcode"、"orderquantity"、"invoicquantity"、"price"、"totalprice"、"receiveddate";页脚部分:"status"one_answers"remarks">
我如何从表中生成对象或修改json以获得json结构如需要那样?
修改json和操作查询结果,但不工作
这是一个分组的方法:
- 创建一个Map,以
poNumber
为键,items
为空数组,status
和remarks
为属性,对应的值为目标对象结构。 - 迭代数据以填充
poNumber
从该地图检索到的条目的 - 从地图中提取值
items
数组const data = [{"poNumber": "002","modelCode": "SM-A536EZWHXID","orderQuantity": "1","invoiceQuantity": null,"price": "1000","totalPrice": "1000","receivedDate": "Mar 26 2023 3:26AM","status": null,"remarks": null},{"poNumber": "002","modelCode": "SM-A536EZWHXID","orderQuantity": "1","invoiceQuantity": null,"price": "1000","totalPrice": "1000","receivedDate": "Mar 26 2023 3:26AM","status": null,"remarks": null},{"poNumber": "002","modelCode": "SM-A536EZOGXID","orderQuantity": "1","invoiceQuantity": null,"price": "1000","totalPrice": "1000","receivedDate": "Mar 26 2023 3:26AM","status": null,"remarks": null}];
const map = new Map(data.map(({poNumber, status, remarks}) =>
[poNumber, {poNumber, items: [], status, remarks}]
));
for (const {poNumber, status, remarks, ...rest} of data) {
map.get(poNumber).items.push(rest);
}
const result = [...map.values()];
console.log(result);
@vimmuth,感谢您的回复
这是我的vscode
结果{
"002": {
"poNumber": "002",
"items": [
{
"modelCode": "SM-A536EZWHXID",
"orderQuantity": "1",
"invoiceQuantity": null,
"price": "1000",
"totalPrice": "1000",
"receivedDate": "Mar 26 2023 3:26AM"
},
{
"modelCode": "SM-A536EZWHXID",
"orderQuantity": "1",
"invoiceQuantity": null,
"price": "1000",
"totalPrice": "1000",
"receivedDate": "Mar 26 2023 3:26AM"
{
"modelCode": "SM-A536EZOGXID",
"orderQuantity": "1",
"invoiceQuantity": null,
"price": "1000",
"totalPrice": "1000",
"receivedDate": "Mar 26 2023 3:26AM"
}
],
"status": null,
"remarks": null
}
}
如何删除多余的行号#2?
"002":{
谢谢
const data = [{"poNumber": "002","modelCode": "SM-A536EZWHXID","orderQuantity": "1","invoiceQuantity": null,"price": "1000","totalPrice": "1000","receivedDate": "Mar 26 2023 3:26AM","status": null,"remarks": null},{"poNumber": "002","modelCode": "SM-A536EZWHXID","orderQuantity": "1","invoiceQuantity": null,"price": "1000","totalPrice": "1000","receivedDate": "Mar 26 2023 3:26AM","status": null,"remarks": null},{"poNumber": "002","modelCode": "SM-A536EZOGXID","orderQuantity": "1","invoiceQuantity": null,"price": "1000","totalPrice": "1000","receivedDate": "Mar 26 2023 3:26AM","status": null,"remarks": null}];
const map = new Map(data.map(({poNumber, status, remarks}) =>
[poNumber, {poNumber, items: [], status, remarks}]
));
for (const {poNumber, status, remarks, ...rest} of data) {
map.get(poNumber).items.push(rest);
}
const result = [...map.values()];
console.log(result);
@trincot感谢您的回复
我尝试在我的vscode,但为什么结果是这样的?
[
{
poNumber: '002',
items: [ [Object], [Object], [Object] ],
status: null,
remarks: null
}
]
* * * *编辑/更新以上结果来自独立执行
但是当我集成到我的代码时,结果就像期望的那样完美
案例解析