-2
votes

Qu'est-ce qui est différent entre ces deux filtres?

Qu'est-ce qui est différent entre ces deux blocs de code, le résultat du résultat est le même. Quelqu'un peut-il m'aider et expliquer la différence? xxx

second code xxx

Exemple de sandbox de code


12 commentaires

"Qu'est-ce qui est différent entre ces deux filtres?" Aucun d'entre eux n'est un filtre. Les deux ont tort (si le but est de trier correctement).


Où avez-vous obtenu ceux-ci? Le premier est un peu non sensible (et des deux problèmes), car il semble tenter de trier un tableau contenant à la fois des chaînes et des objets avec un Nom . (Vous pourrait avoir une gamme d'objets qui comptait une méthode Split et un Nom propriété, mais ...) Nous avons besoin d'un Lot Plus de contexte et une question plus claire et plus définie que «ce qui est différent» afin de vous aider.


Le but est de trier les personnes par ordre alphabétique par nom de famille,


@ T.J. Crowder peut-être que vous pourriez essayer le code de l'échantillon en bas? Dans le cas où vous l'avez manqué


Le premier - ne rien faire. La seconde - triée par nom de famille.


Connexes: Pourquoi ma fonction de flèche ne renvoie-t-elle pas une valeur? .


@Hoangdv comment puis-je le tester?


@Fenici - Je n'ai pas à dire, je peux lire le code, qui obtient clairement la valeur de retour qui ne va pas lorsque les entrées sont la même . Aussi: être snarky n'est pas un moyen utile d'obtenir de l'aide, maintenant ou à l'avenir.


@HOANGDV - Peut-être que si la mise en œuvre de trier n'est pas trop confuse par le fait que le rappel obtient la valeur de retour fausse pour les entrées égales. :-) Le deuxième retour doit être retour alast.localecompare (Blast); ou au moins retour Alast == Blast? 0: Alast> Blast? 1: -1; .


@ T.J.Crowder Désolé, juste nouveau à JS, ok je l'ai eu. Donc, le tri nécessite une première et la prochaine entrée, et nous devons spécifier chacun d'entre eux, afin de pouvoir le trier?


J'ai bien peur de ne pas avoir aucune idée de ce que vous demandez. Assurez-vous que le contenu complet de votre question est dans Votre question (non seulement liée hors site), affiche les entrées et les sorties (encore une fois, dans la question), quel résultat Vous voulez, qu'est-ce que vous voyez à la place, et qu'est-ce que vous ne comprenez pas.


Associé (?): Comment trier un Tableau d'objets par plusieurs champs?


3 Réponses :


1
votes

Vous devez retourner la différence de deux noms de famille, tels que

people.sort((a, b) => a.split(', ')[0].localeCompare(b.split(', ')[0]));


0 commentaires

-1
votes
const alpha = people.sort((lastOne, nextOne) => {
  const [aLast, aFirst] = lastOne.split(', ');
  const [bLast, bFirst] = nextOne.split(', ');
  return aLast > bLast ? 1 : -1;
});
console.log(alpha);

0 commentaires

0
votes

Ils n'obtiendront jamais les mêmes résultats!

Pour le premier code, vous remarquerez le suivant

const [prénom, nom] = first.split (","); // entraînera une erreur si c'est une matrice d'objets que vous triez

premier.lastname> last.lastname? 1: -1; // provoquera une erreur si c'est un tableau de chaînes que vous triez

Et vous devez également l'envelopper à l'aide d'une instruction de retour si vous tapez le code avant le retour, JavaScript n'ajoutera pas le rendement implicite dans un tel cas

retour (premier.lastname> last.lastname? 1: -1);

Les gens sont une gamme d'objets contenant des noms de famille, c'est pourquoi il peut accéder au prénom et deuxième nom Des objets "d'abord" et "derniers" sont passés directement à la flèche.

Array of People devrait être [{Nom: "John"}, {Nom: "Brad"}, ....] L'objet peut également tenir d'autres propriétés telles que le prénom, l'âge, quoi que ce soit, afin d'utiliser de cette façon.


pendant le deuxième code Les gens sont une gamme de cordes ["Dernier, premier", "Doe, John" ....]

const [Alast, Afirt] = lastone.split (','); const [Blast, Bfirst] = Nextone.split (',');

Lastone et Nextone transmis à la flèche semble être des chaînes "Dernier, premier" séparé par une virgule, et après avoir fractionné, vous désactivez la matrice qui résultera de la division "lastone" et "Nextone" et Utilisez leur nom de lancement dans le tri en utilisant 2 nouvelles variables qui contiennent des valeurs pour vérifier


0 commentaires