これらの文字列内の文字に基づいて文字列の並べ替えを試みています。私はこの配列をログインしたときにこれまでのところ、私はこの文字列内の文字に基づいて文字列を並べ替える
function doMath(s) {
let arr = s.split(' ');
let letterArr = [];
let sortedArr = [];
let n = 0;
for (var i = 0; i < arr.length; i++) {
n = arr[i].indexOf(arr[i].match(/[a-z]/i));
letterArr.push(arr[i][n]);
}
letterArr.sort();
console.log(letterArr);
for (i = 0; i < arr.length; i++) {
for (var j = 0; j <= arr[i].length; j++) {
if (arr[i].indexOf(letterArr[j]) > -1) {
sortedArr.unshift(arr[i]);
}
}
}
console.log(sortedArr);
}
doMath("24z6 1x23 y369 89a 900b");
問題が示されています。私はsortedArr.push(arr[i]);
、 を使用した場合、出力は次のようになります。
["24z6", "1x23", "y369", "89a", "900b"]
私はsortedArr.unshift(arr[i]);
を使用する場合しかし、私は出力を得る:
["900b", "89a", "y369", "1x23", "24z6"]
b
がa
の前に来て、なぜ私はわかりません。
ソートのためにa-zとしたいだけです。私はpush()
を試しましたが、正しいですが後方に(z-a)です。 unshift()
を試してみると、b
とa
が切り替わる点を除いて正しいです。
配列をソートするための何の条件?入力を配列として逆にしたいのですか、または特定の順序がありますか? –
私はちょうどそれがソートのためにa-zであることを望みます。私はプッシュを試みましたが、それは正しかったが、逆方向にしようとすると(za)、bとa以外のものは正しいです。 – sourlemonaid
あなたは次のようにしたいと思います: '[" 89a "、" 900b "、" 1x23 "、" y369 " 24z6 "]'正しい?私は 'y'の後に' x'を望んでいないと仮定しています。 –