У меня есть такой массив:
arr = []
arr[0] = "ab"
arr[1] = "abcdefgh"
arr[2] = "abcd"
После сортировки выходной массив должен быть:
arr[0] = "abcdefgh"
arr[1] = "abcd"
arr[2] = "ab"
Я имею в виду, что я хочу в порядке убывания длины каждого элемента.
javascript
arrays
string
sorting
Рамеш Кумар
источник
источник
sort
довольно прямолинейно, где у вас проблемы?Ответы:
Вы можете использовать
Array.sort
метод для сортировки массива. Функция сортировки, которая рассматривает длину строки в качестве критерия сортировки, может использоваться следующим образом:arr.sort(function(a, b){ // ASC -> a.length - b.length // DESC -> b.length - a.length return b.length - a.length; });
Примечание: сортировка
["a", "b", "c"]
по длине строки не гарантирует возврата["a", "b", "c"]
. Согласно спецификациям :Если целью является сортировка по длине, то по порядку словаря необходимо указать дополнительные критерии:
["c", "a", "b"].sort(function(a, b) { return a.length - b.length || // sort by length, if equal then a.localeCompare(b); // sort by dictionary order });
источник
arr.sort((a, b) => b.length - a.length)
Мы можем использовать Array.sort для сортировки этого массива.
Решение ES5
var array = ["ab", "abcdefgh", "abcd"]; array.sort(function(a, b){return b.length - a.length}); console.log(JSON.stringify(array, null, '\t'));
Решение ES6
Внимание: не все браузеры понимают код ES6!
В ES6 мы можем использовать выражения стрелочной функции .
let array = ["ab", "abcdefgh", "abcd"]; array.sort((a, b) => b.length - a.length); console.log(JSON.stringify(array, null, '\t'));
источник
Вот сортировка, в зависимости от длины строки с javascript, как вы просили:
[решение задачи пузырьковой сортировкой] [1]
[1]: http://jsfiddle.net/sssonline2/vcme3/2/
enter code here
источник
Основываясь на ответе Салмана, я написал небольшую функцию для его инкапсуляции:
function sortArrayByLength(arr, ascYN) { arr.sort(function (a, b) { // sort array by length of text if (ascYN) return a.length - b.length; // ASC -> a - b else return b.length - a.length; // DESC -> b - a }); }
тогда просто позвони с
sortArrayByLength( myArray, true );
Обратите внимание, что, к сожалению, функции можно / не следует добавлять в прототип массива, как описано на этой странице .
Кроме того, он изменил массив, переданный в качестве параметра, и ничего не возвращает. Это приведет к дублированию массива и не подходит для больших массивов. Если у кого-то есть идея получше, оставьте комментарий!
источник
Я адаптировал ответ @ shareef, чтобы сделать его кратким. Я использую,
.sort(function(arg1, arg2) { return arg1.length - arg2.length })
источник
#created a sorting function to sort by length of elements of list def sort_len(a): num = len(a) d = {} i = 0 while i<num: d[i] = len(a[i]) i += 1 b = list(d.values()) b.sort() c = [] for i in b: for j in range(num): if j in list(d.keys()): if d[j] == i: c.append(a[j]) d.pop(j) return c
источник
Если вы хотите сохранить порядок элементов той же длины, что и исходный массив, используйте пузырьковую сортировку.
Input = ["ab","cdc","abcd","de"]; Output = ["ab","cd","cdc","abcd"]
Функция:
function bubbleSort(strArray){ const arrayLength = Object.keys(strArray).length; var swapp; var newLen = arrayLength-1; var sortedStrArrByLenght=strArray; do { swapp = false; for (var i=0; i < newLen; i++) { if (sortedStrArrByLenght[i].length > sortedStrArrByLenght[i+1].length) { var temp = sortedStrArrByLenght[i]; sortedStrArrByLenght[i] = sortedStrArrByLenght[i+1]; sortedStrArrByLenght[i+1] = temp; swapp = true; } } newLen--; } while (swap); return sortedStrArrByLenght; }
источник
Этот код должен помочь:
var array = ["ab", "abcdefgh", "abcd"]; array.sort(function(a, b){return b.length - a.length}); console.log(JSON.stringify(array, null, '\t'));
источник
<script> arr = [] arr[0] = "ab" arr[1] = "abcdefgh" arr[2] = "sdfds" arr.sort(function(a,b){ return a.length<b.length }) document.write(arr) </script>
Анонимная функция, которую вы передаете для sort, сообщает ей, как сортировать данный массив. Надеюсь, это поможет. Я знаю, что это сбивает с толку, но вы можете указать функции сортировки, как сортировать элементы массива, передав ей функцию в качестве параметра, сообщающего это что делать
источник