J'ai un tableau E.G. 3,4,3,1,5 p>
Le tri en ordre croissant ou décroissant donne 1,3,3,4,5 ou 5,4,3,3,1. P>
J'ai besoin de l'ordre d'origine par ex. 3,3,4,1,5 p>
Underscorejs a la méthode de groupeby, mais qui scindre le tableau dans les groupes. P>
Des idées? P>
3 Réponses :
Si vous souhaitez trier la matrice en place, vous pouvez obtenir la priorité pour chaque élément et p> trier code> à l'aide de l'objet prioritaire
const
array = [3, 4, 3, 1, 5],
counter = array.reduce((acc, n) => acc.set(n, acc.get(n) + 1 || 1), new Map),
output = Array.from(counter).flatMap(([n, count]) => Array(count).fill(n))
console.log(output)
Vous pouvez faire
const arr = [3, 4, 3, 1, 5]; const result = arr.sort((a, b) => a === b || arr.indexOf(a) - arr.indexOf(b)); console.log(result);
QuestionData.Questtions = _.Chain (Questiondata.Questtions) .Sortby ('Catégorie') .ach (Fonction (résultant, IndexNew) {résultatsNew.order = IndexNew + 1;}) .Sortby ('ordre') .value () ;
Je ne trie pas réellement sur 3,4,3,1,5, je trie sur une propriété "catégorie" d'un tableau qui a ces valeurs. Comment cela peut-il être appliqué ce qui précède?
Je suppose questiondata.questions.sort ((a, b) = >.Category === b.category || questiondata.questions.indexof (a) - questiondata.questions.indexof (b)); Code>
Cela n'a pas changé n'a pas été regroupés du tout.
Oh, et Groupby commande également sur la catégorie, ce que je ne veux pas que ce soit. J'en ai besoin pour garder l'ordre existant, il suffit de les regrouper.
Vous pouvez afficher l'objet ou un objet avec la même structure et votre sortie attendue.
Voici ma solution assez longue qui fonctionne, mais pourrait faire le raffinage.
var tempQuestions = []; // For each Question. _.each(questionData.questions, function (resultCategory, indexCategory) { // Get other Question for the same Category, and push to new Array. tempQuestions.push(_.filter(questionData.questions, function (num) { return num.category === resultCategory.category; })); // Remove all Question for the processes Cateogory (these are now stored in the tempQuestions) questionData.questions = _.filter(questionData.questions, function (item) { return item.category !== resultCategory.category; }); }); // The above processing will create some unwanted blank arrays, remove them. tempQuestions = _.filter(tempQuestions, function (num) { return num.length !== 0; }); // Flatten the array structure to match the original. questionData.questions = _(tempQuestions).chain() .zip() .flatten() .value();
Qu'est-ce qui qualifie un groupe?
QuestionData.Questtions = _.Chain (Questiondata.Questtions) .Sortby ('Catégorie') .ach (Fonction (résultant, IndexNew) {résultatsNew.order = IndexNew + 1;}) .Sortby ('ordre') .value () ;
Cloner le tableau d'origine !?
Cela ressemble à un problème X-y, surtout compte tenu du contexte supplémentaire dans ce commentaire de code. Vous n'êtes probablement pas en fait i> Tri des chiffres, êtes-vous?
Par exemple. Nous pourrions remplacer la selle ("catégorie") avec groupeby ("catégorie"). mais cela change le format de la sortie.
Correct. Mais je trie sur la catégorie, qui est un nombre
Ce n'est pas clair, quel ordre vous avez besoin ... Voulez-vous commander le tableau par la clé de tableau?
Je commande sur la «catégorie» de chaque élément de tableau, qui a une valeur numérique.