我有一个对象列表:
[ { id: 4,name:'alex' },{ id: 3,name:'jess' },{ id: 9,name:'...' },{ id: 1,name:'abc' } ]
我有另一个名单与正确的“命令”.
[ 3,1,9,4]
根据密钥“id”,如何将第一个列表与第二个列表的排序相匹配?
结果应该是:
[ { id: 3,name:'abc' },{ id: 4,name:'alex' } ]
解决方法
我踩了这个问题,用简单的.sort解决了这个问题
假设要排序的列表存储在变量needSort中,并且具有顺序的列表是变量顺序,并且两者都在相同的范围内,您可以像这样运行.sort:
needSort.sort(function(a,b){ return order.indexOf(a.id) < order.indexOf(b.id) ? -1 : 1; });
它为我工作,希望它有帮助.