假设我们有两个对象数组:orders和orderStatus。
orders数组如下所示:
[
{id: 1, name: 'order1', status: 'unpaid'},
{id: 2, name: 'order2', status: 'shipped'},
{id: 3, name: 'order3', status: 'cancelled'},
{id: 4, name: 'order4', status: 'unpaid'},
{id: 5, name: 'order5', status: 'shipped'}
]
orderStatus数组如下所示:
[
{name: 'unpaid'},
{name: 'shipped'},
{name: 'cancelled'}
]
我们希望按照orderStatus数组中的name属性值的顺序对orders数组进行排序。我们可以使用JavaScript的sort()方法和indexOf()方法来实现:
orders.sort((a, b) => orderStatus.indexOf(orderStatus.find(item => item.name === a.status)) - orderStatus.indexOf(orderStatus.find(item => item.name === b.status)));
在上面的代码中,sort()方法使用indexOf()方法来查找每个订单的状态在orderStatus数组中的索引位置,然后按照该位置对orders数组进行排序。
最终排序后的orders数组如下所示:
[
{id: 1, name: 'order1', status: 'unpaid'},
{id: 4, name: 'order4', status: 'unpaid'},
{id: 2, name: 'order2', status: 'shipped'},
{id: 5, name: 'order5', status: 'shipped'},
{id: 3, name: 'order3', status: 'cancelled'}
]