Ich möchte, dass es in der von mir angegebenen Reihenfolge angeordnet wird. Ich verwende die folgende Methode, um dies ausschließlich mit nativem JavaScript zu tun Gibt es lodash oder andere Methoden? Können bekannte Pakete von drei Parteien die folgenden Effekte erzielen, oder gibt es andere effizientere und einfachere Möglichkeiten, sie zu schreiben?
var arr = [
{
name:'小麦',
phone:'112233'
},
{
name:'绿绿',
phone:'4445566'
},
{
name:'增增',
phone:'321321'
},
{
name:'弱弱',
phone:'123123'
}
];
//希望达到的顺序 (我已知所有元素)
var order = {
'增增':0,
'弱弱':1,
'绿绿':2,
'小麦':3
};
var newOrderedArr = [];
arr.forEach((element)=>{
newOrderedArr[order[element.name]] = element;
});
console.log(newOrderedArr);
Die Ergebnisse der Konsole sind wie folgt
[ { name: '增增', phone: '321321' },
{ name: '弱弱', phone: '123123' },
{ name: '绿绿', phone: '4445566' },
{ name: '小麦', phone: '112233' } ]
如果
orders
里面是按0 ~ n
的连续值,那你的方法已经非常非常快了,其它库方法达不到这个速度(因为它们会考虑不连续的情况)如果不连续,可以用 sort
或者也可以用你的办法,再加个过滤
补充:对非连续序号的情况,加不加排序的比较如图
这个思路觉得已经很快了。从易用的角度看 order 的 index 可以生成,这样每次输入名字的数组即可。
但如果有重名则不行。得为每个名字维护个数组记录,最后再 concat 起来