-2
votes

Besoin d'aide pour trier des données à la date

J'ai donc quelques données qui reviennent d'une demande qui ressemble à ceci: xxx

mais bien sûr avec beaucoup plus d'articles. Donc, je cherche à trier ces éléments sur "priorité" afin que l'objet avec 4 vient en premier dans la matrice. N'importe quelle idée comment faire cela dans JavaScript?


3 commentaires

... et nous avons besoin de plus de réponses sur Trier () , alors, s'il vous plaît, joindre


... et l'Oscar va à l'orateur le plus long enroule, postant sa solution identique 8 minutes après la première réponse


Combien d'effort de recherche est attendu des utilisateurs de dépassement de pile?


4 Réponses :


0
votes

var f =[{
  subject: 'something',
  email: 'someone@gmail.com',
  name: 'Bert',
  priority: '2'
},
{
  subject: 'something else',
  email: 'someoneelse@gmail.com',
  name: 'Betty',
  priority: '4'
},
{
  subject: 'another thing',
  email: 'anotherone@gmail.com',
  name: 'Joanne',
  priority: '1'
}];

f.sort((a,b) => +b.priority - +a.priority)
console.log(f)


0 commentaires

-1
votes

Utiliser Trier CODE> & Convertir la valeur de Priorité code> à partir de chaîne au numéro en utilisant parseint code>.

p>

let data = [{
    subject: 'something',
    email: 'someone@gmail.com',
    name: 'Bert',
    priority: '2'
  },
  {
    subject: 'something else',
    email: 'someoneelse@gmail.com',
    name: 'Betty',
    priority: '4'
  },
  {
    subject: 'another thing',
    email: 'anotherone@gmail.com',
    name: 'Joanne',
    priority: '1'
  }
];

let sortedDt = data.sort(function(a, b) {
  return parseInt(b.priority, 10) - parseInt(a.priority, 10)
});

console.log(sortedDt)


1 commentaires

cela marche. Savez-vous peut-être qu'elles appliquer un filtre secondaire?



-1
votes

Dans JavaScript, il existe une méthode appelée .sort () code> dans la matrice pouvant être utilisée pour le tri. C'est comme ça que ça marche.

  1. Si la comparaison (A, B) est inférieure à 0, trier A à un index inférieur à B (I.e. A vient en premier). Li>
  2. Si la comparaison (A, B) retourne 0, laissez A et B inchangées sans l'autre, mais triés par rapport à tous les éléments différents. Remarque: la norme ECMAScript ne garantit pas ce comportement, ce n'est donc pas tous les navigateurs (par exemple, les versions Mozilla datant d'au moins 2003) Respectez ceci. LI>
  3. Si la comparaison (A, B) est supérieure à 0, trier B sur un index inférieur à A (I.E. B vient en premier). LI>
  4. Comparaison (A, B) doit toujours renvoyer la même valeur lorsqu'il est donné une paire d'éléments spécifique A et B comme ses deux arguments. Si des résultats incohérents sont renvoyés, l'ordre de tri est indéfini. LI> ol>

    Donc, dans notre cas, nous devons le trier dans l'ordre décroissant. I.E Les objets avec moins de priorité doivent venir en haut. Pour cela, nous devons retourner un nombre inférieur à 0 0. Ce qui peut être fait si nous soustrayons la priorité de B code> par priorité de A code>. P> dans le code: p>

    p>

    const items = [{
      subject: 'something',
      email: 'someone@gmail.com',
      name: 'Bert',
      priority: '2'
    },
    {
      subject: 'something else',
      email: 'someoneelse@gmail.com',
      name: 'Betty',
      priority: '4'
    },
    {
      subject: 'another thing',
      email: 'anotherone@gmail.com',
      name: 'Joanne',
      priority: '1'
    }];
    
    const sorted = items.sort((a,b) => b.priority - a.priority);
    
    console.log(sorted);


0 commentaires

0
votes

J'ai écrit une fonction générique pour effectuer le tri par un nom de propriété ainsi que la fonctionnalité d'ordre croissant et décroissant.

function sortDataByPropName(data, property, order) {
    if(order === 'asc'){
      data.sort((a, b) =>  a[property] - b[property])
    } else {
      data.sort((a, b) =>  b[property] - a[property])
    }
    return data;
  }


0 commentaires