Eu tenho uma matriz como esta:
arr = []
arr[0] = "ab"
arr[1] = "abcdefgh"
arr[2] = "abcd"
Após a classificação, a matriz de saída deve ser:
arr[0] = "abcdefgh"
arr[1] = "abcd"
arr[2] = "ab"
Quer dizer, eu quero na ordem decrescente do comprimento de cada elemento.
javascript
arrays
string
sorting
ramesh kumar
fonte
fonte
sort
é bem direto, onde você está tendo dificuldade?Respostas:
Você pode usar o
Array.sort
método para classificar a matriz. Uma função de classificação que considera o comprimento da string como o critério de classificação pode ser usada da seguinte maneira:Nota: a classificação
["a", "b", "c"]
pelo comprimento da string não tem garantia de retorno["a", "b", "c"]
. De acordo com as especificações :Se o objetivo é classificar por comprimento, por ordem de dicionário, você deve especificar critérios adicionais:
fonte
arr.sort((a, b) => b.length - a.length)
Podemos usar o método Array.sort para classificar esse array.
Solução ES5
Solução ES6
Atenção: nem todos os navegadores podem entender o código ES6!
No ES6, podemos usar expressões de função de seta .
fonte
Esta é a classificação, dependendo do comprimento de uma string com javascript, conforme você pediu:
[a solução do problema por tipo de bolha] [1]
[1]: http://jsfiddle.net/sssonline2/vcme3/2/
enter code here
fonte
Com base na resposta de Salman, escrevi uma pequena função para encapsulá-lo:
então é só ligar com
Observe que, infelizmente, funções podem / não devem ser adicionadas ao protótipo do Array, conforme explicado nesta página .
Além disso, ele modificou o array passado como parâmetro e não retorna nada. Isso forçaria a duplicação do array e não seria ótimo para arrays grandes. Se alguém tiver uma ideia melhor, por favor, comente!
fonte
Adaptei a resposta de @shareef para torná-la concisa. Eu uso,
.sort(function(arg1, arg2) { return arg1.length - arg2.length })
fonte
fonte
Este código deve fazer o truque:
fonte
A função anônima que você passa para classificar diz a ele como classificar o array fornecido. Espero que isso ajude. Sei que isso é confuso, mas você pode dizer à função de classificação como classificar os elementos do array passando-lhe uma função como um parâmetro informando é o que fazer
fonte