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

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)
黄舟

Siorders里面是按0 ~ na 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
      À propos de nous Clause de non-responsabilité Sitemap
      Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!