我有一个array
的JSON
,config
数据。
var config = [ [{'state': 'step1'}],
[{'state': 'step2'}] ,
[{'state': 'step3'}]
];
在
config
中,数据是有序的。我也有一个
JSON
,Events
数据,其中有这些state
,但它们不是按顺序排列的。我想根据Events
转换config
下面的数据。Events: [
{ Status: 'rendered', State: 'step2' },
{ Status: 'rendered', State: 'step3' },
{ Status: 'rendered', State: 'step1' } ,
{ Status: 'completed', State: 'step3'}
],
此外,配置的最后一步将有两个条目,对于该呈现状态,应该在完成之前。
我期望的结果是:
Events: [
{ Status: 'rendered', State: 'step1' },
{ Status: 'rendered', State: 'step2' },
{ Status: 'rendered', State: 'step3' } ,
{ Status: 'completed', State: 'step3' }
]
注:到目前为止,我还没有任何工作/容易出错的代码基本上,我无法考虑如何合并
config
来对Events
进行更改。谢谢
最佳答案
将config
转换为字符串数组,然后在比较该数组中.sort
属性的indexOf
差异时使用States
:
var config = [ [{'state': 'step1'}],
[{'state': 'step2'}] ,
[{'state': 'step3'}]
];
const Events = [
{ Status: 'rendered', State: 'step2' },
{ Status: 'rendered', State: 'step3' },
{ Status: 'rendered', State: 'step1' } ,
{ Status: 'completed', State: 'step3'}
];
const eventOrders = config.map(([{ state }]) => state);
Events.sort((a, b) => (
eventOrders.indexOf(a.State) - eventOrders.indexOf(b.State)
|| Events.indexOf(a) - Events.indexOf(b)
));
console.log(Events);