【发布时间】:2018-03-22 15:43:28
【问题描述】:
我正在尝试将数组的属性合并为类似 JSON 的字符串作为新属性。
鉴于类似:
[{
{
"orderNo":"1",
"description":"Item 1",
"note": "Note 1"
},
{
"orderNo":"2",
"description":"Item 2",
"note": "Note 2"
},
{
"orderNo":"2",
"description":"Item 3",
"note": "Note 3"
}
}]
并将其转换为:
[{
'0':[
{
'orderNo':'1',
'items': '[{"description":"Item 1", "note": "Note 1"}]'
}
],
'1':[
{
'orderNo':'2',
'items': '[{"description":"Item 2", "note": "Note 2"}, {"description":"Item 3", "note": "Note 3"}]'
}
]
}]
使用以下函数(由@Barmar 提供)我可以将单个属性累积到一个项目数组中(在本例中为itemId)。
var newData = [];
for (var i = 0; i < data.length; i++) {
var orderNo = data[i].orderNo;
if (!newData[orderNo]) { // Add new object to result
newData[orderNo] = {
orderNo: orderNo,
items: []
};
}
newData[orderNo].items.push('{"itemId":' + data[i].itemId + ',"description:"' + data[i].description); // how than this be converted into a string?
}
如何将多个属性串在一起并保持它们的关联,以便以后可以使用JSON.parse 对其进行解析?
【问题讨论】:
-
这不清楚,因为没有模式。为什么
"description":"Item 3"? -
为什么在一个数组中有一个带有“数字”键的对象以零换行? O.o
-
它有一个一致的模式
-
是的,有一个错字。现在已在问题中更正。
-
@Andreas 这个模式是按照关系数据库中的订单号对订单商品进行分组的。
标签: javascript arrays json sorting