我有一份订单清单。我想对列表进行排序,如果同一客户下的订单不止一个,则订单被分组。很难用语言来解释,所以这里是一个例子:
这是按订单号排序的列表:
<table>
<tr>
<th>Customer</th>
<th>Order No</th>
</tr>
<tr>
<td>A</td>
<td>1</td>
</tr>
<tr>
<td>B</td>
<td>2</td>
</tr>
<tr>
<td>C</td>
<td>3</td>
</tr>
<tr>
<td>A</td>
<td>4</td>
</tr>
<tr>
<td>A</td>
<td>5</td>
</tr>
<tr>
<td>D</td>
<td>6</td>
</tr><tr>
<td>C</td>
<td>7</td>
</tr>
</table>
我希望这个列表看起来像这样:
<table>
<tr>
<th>Customer</th>
<th>Order No</th>
</tr>
<tr>
<td>A</td>
<td>1</td>
</tr>
<tr>
<td>A</td>
<td>4</td>
</tr>
<tr>
<td>A</td>
<td>5</td>
</tr>
<tr>
<td>B</td>
<td>2</td>
</tr>
<tr>
<td>C</td>
<td>3</td>
</tr>
<tr>
<td>C</td>
<td>7</td>
</tr>
<tr>
<td>D</td>
<td>6</td>
</tr>
</table>
我将非常感谢您的任何提示:) 谢谢!
答案 0 :(得分:0)
您可以创建客户和订单的地图。 为每个地图条目创建一个订单号列表。 这样做您可以对每个订单列表进行排序。
示例:
const list = [
{ customer: 'A', ordernumber: 2 },
{ customer: 'B', ordernumber: 1},
{ customer: 'A', ordernumber: 1 },
{ customer: 'A', ordernumber: 3 }
]
customerOrderMap = {}
list.forEach(element => customerOrderMap[element.customer] = [])
list.forEach(element => customerOrderMap[element.customer].push(element.ordernumber))
Object.keys(customerOrderMap).forEach(key => {
console.log(customerOrderMap[key].sort((a, b) => a - b))
})
console.log(customerOrderMap)