回答:
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メソッドを使用して、この配列をソートできます。
var array = ["ab", "abcdefgh", "abcd"];
array.sort(function(a, b){return b.length - a.length});
console.log(JSON.stringify(array, null, '\t'));
昇順ソートの場合:
a.length - b.length
降順ソートの場合:
b.length - a.length
注意:すべてのブラウザが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 );
このページで説明しているように、残念ながら、関数をArrayプロトタイプに追加することはできません。
また、パラメーターとして渡された配列を変更し、何も返しません。これは配列の複製を強制するため、大きな配列には適していません。誰かがより良いアイデアを持っている場合は、コメントしてください!
@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
<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に渡す無名関数は、与えられた配列を並べ替える方法を伝えます。これが役立つことを願っています。これは混乱を招きますが、パラメータとして関数を渡すことにより、配列の要素を並べ替える方法をsort関数に伝えることができます。それは何をすべきか
sort
かなり簡単ですが、どこで困っていますか?