La méthode Array.prototype.sort consiste à trier le tableau. Cette méthode prend un paramètre de fonction pour spécifier la règle de tri.
Examinons d'abord l'application simple du tri :
vararr=[2,1,3,4];
alert(arr.sort()) // [1,2,3,4] Organiser de petit à grand
// Maintenant, organiser de grand à petit pour obtenir [4,3,2,1]
alert(arr.sort(function(left,right){return left>right?-1:1}))
//Ici, la méthode de tri utilise la valeur de retour 1 ou -1 de la fonction paramètre pour décider si elle doit trier order ou dans l'ordre inverse
. Vous vous souvenez de ce que je vous ai dit auparavant sur l'utilisation de la méthode Function.apply pour obtenir le plus grand élément d'un tableau ?
L'article utilise deux méthodes différentes pour obtenir la valeur maximale d'un tableau.
Maintenant, le tri peut également s'afficher
var arr=[2,1,3,4];
var minValue=arr.sort()[0];
var maxValue=arr.sort()[arr.length-1] // Que diriez-vous de arr.sort().pop()
? C'est aussi une méthode d'implémentation alternative Il n'est pas nécessaire d'écrire un parcours de boucle.
Cependant, je dois souligner que cette méthode est la moins efficace. Vous pouvez toujours utiliser cette technique pour des tableaux comportant des dizaines ou des centaines d'éléments.
Cependant, si le tableau est très grand, l'utilisation de la méthode sort() peut être si lente qu'elle vous donne envie de fumer
. Discussion plus approfondie sur le tri des structures de données complexes.
1. Tri des tableaux multidimensionnels
vararr=[
[2,1,55,4],
[5,3,22,3],
[1,2,77,2],
[9,4,33,5],
];
alert("Trié par défaut par première colonnen"+arr.sort().join("n"))
alert("Trier maintenant par la troisième colonnen"+arr.sort(function(left,right){return left[2]>right[2]?1:-1}).join("n"))
alert("Trier maintenant dans l'ordre inverse sur la troisième colonnen"+arr.sort(function(left,right){return left[2]>right[2]?-1:1}).join("n ") )
2. Trier les structures de données complexes
Array.prototype.each=function(f){for(var i=0;i<this.length;i++) f(this[i],i,this)}
function showName(item){alert(item.name)}; //Afficher le nom
var arr=[
{nom:"facture",argent:500},
{nom :"go_rush",argent:400},
{nom:"dudu",argent:9000}
];
//Afficher dudu, bill, go_rush dans l'ordre. Il semble que dudu soit le plus riche et moi le plus pauvre.
arr.sort(function(left,right){return left.money>right.money?-1:1}).each(showName)
3. En triant le tableau, j'ai parlé de ce sujet avec tout le monde hier.
Voir aussi :
http://www.cnblogs.com/ashun/archive/2006/11/30/appendChild_table_sort.html
Tri de table plus complexe (utilisant également la fonction de tri d'Array) :
http://community.csdn.net/expert/Topicview2.asp?id=5174915
4. Il existe une extension très intelligente pour trier dans Protype.js. Regardons d'abord son code :
1 sortBy: function(iterator) {.
2 renvoie this.collect(function(value, index) {
3 return {valeur : valeur, critères : itérateur (valeur, index)} ;
4 }).sort(function(gauche, droite) {
5 var a = gauche.critères, b = droite.critères;
6 renvoie une < b -1 : une > b ?
7 }).pluck('valeur');
8},
Ce sortBy vous permet de transmettre une fonction, d'exécuter la fonction avec chaque élément du tableau en paramètre, et enfin de trier les résultats renvoyés par la fonction.
Permettez-moi de détailler sa fonction ci-dessous.
La méthode collect est en fait la méthode map. Elle est équivalente à.
Array.prototype.map=fonction(f){
pour(var i=0;ret=[];i<this.length;i++) ret[i]=f(this[i],i,this)
retour à la retraite
}
Par exemple, maintenant
arr=[2,1,4,3]
iterator=function(x){return x*x}
Vous pouvez obtenir un tel tableau en 1 à 3 lignes de code
[
{valeur : 2, critères : 4},
{valeur : 1, critères : 1},
{valeur : 4, critères : 16},
{valeur : 3, critères : 9}
]
4 à 6 lignes de code trie le tableau selon des critères : du petit au grand. Après tri, on obtient.
[
{valeur : 1, critères : 1},
{valeur : 2, critères : 4},
{valeur : 3, critères : 9},
{valeur : 4, critères : 16}
]
La ligne 7 du code est la plus simple. Elle prend l'attribut value de chaque élément et obtient finalement [1,2,3,4] pour implémenter sortBy(function...) pour trier arr.
Peut-être que ma capacité d'expression linguistique est limitée. Quand je parle de sortBy dans prototype.js, je ne sais tout simplement pas comment l'exprimer avec des mots.
Je suis vraiment désolé que tout le monde doive travailler si dur pour lire le code d'explication que j'ai écrit
http://www.cnblogs.com/ashun/archive/2006/12/01/sort_sortby_array_prototype.html
!