sort - javascript spécifie manuellement l'ordre d'un tableau d'objets
淡淡烟草味
淡淡烟草味 2017-06-28 09:27:54
0
2
696

J'ai un tableau d'objets. Je veux qu'il soit disposé dans l'ordre que j'ai spécifié. Comme suit, il est disposé dans l'ordre des noms que j'ai spécifié. Je vais utiliser la méthode suivante pour le faire uniquement avec du JavaScript natif. existe-t-il du lodash ou d'autres méthodes ? Des packages bien connus de trois parties peuvent-ils obtenir les effets suivants, ou existe-t-il d'autres moyens plus efficaces et plus simples de les écrire ?


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);

Les résultats de la console sont les suivants

[ { name: '增增', phone: '321321' },
  { name: '弱弱', phone: '123123' },
  { name: '绿绿', phone: '4445566' },
  { name: '小麦', phone: '112233' } ]
淡淡烟草味
淡淡烟草味

répondre à tous(2)
黄舟

Si orders 里面是按 0 ~ n a des valeurs continues, alors votre méthode est déjà très, très rapide, et les autres méthodes de la bibliothèque ne peuvent pas atteindre cette vitesse (car elles considéreront des situations discontinues)

S'ils ne sont pas continus, vous pouvez utiliser le tri

newOrderedArr = arr.sort((a, b) => order[a.name] - order[b.name]);

Ou vous pouvez utiliser votre méthode et ajouter un filtre

newOrderedArr = newOrderedArr.filter(n => n);

Supplément : Pour le cas de numéros de série non consécutifs, la comparaison sans tri est comme indiqué sur la figure

漂亮男人

Cette idée semble être très rapide. Du point de vue de la facilité d'utilisation, l'index de commande peut être généré de manière à pouvoir saisir à chaque fois un tableau de noms.

Mais pas s'il y a des noms en double. Vous devez conserver un enregistrement de tableau pour chaque nom et enfin le concaténer

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal