JavaScript 如何对字符串进行排序
字符串的排序是指按照字典或字母顺序排列字符串。在使用JavaScript开发应用程序时,通常会对字符串阵列进行排序。在本教程中,我们将学习如何在JavaScript中对字符串进行排序。
例如,如果你从API中获得一些数据,并希望以排序的方式显示这些数据,那么字符串排序就非常有用。
在这里,我们将学习使用内置方法和各种天真的方法对字符串进行排序。
使用sort()方法对字符串进行排序
在JavaScript中,sort()是我们可以对数组使用的内置方法。一般来说,在其他编程语言中,sort()方法是默认对数字值进行排序的。但是,JavaScript将数字转换为字符串并按字母顺序排序。
所以,我们可以使用JavaScript的sort()方法,而不使用比较器函数对字符串数组进行排序。
语法
用户可以按照下面的语法来使用JavaScript的sort()方法对字符串进行排序。
Strings.sort();
在上面的语法中,我们使用了字符串数组作为引用和sort()方法。
例1
在这个例子中,我们定义了字符串数组,并用一些字符串值对其进行初始化。之后,我们将数组作为引用,并对数组执行sort()方法。用户可以观察到,数组中的所有字符串都是按字母顺序排序的。
<html>
<body>
<h2>Using the <i>sort() method</i> to sort an array of strings in JavaScript.</h2>
<div id = "output"> </div>
<script>
let output = document.getElementById('output');
let strings = ["Hi", "JavaScript", "TypeScript", "C", "CPP", "Python", "Java", "HTML", "CSS"];
output.innerHTML += "The original string array is " + strings + "<br/>";
strings.sort();
output.innerHTML += "The sorted string array is " + strings + "<br/>";
</script>
</body>
</html>
使用for循环对字符串进行排序(泡沫排序算法)
对字符串进行排序的幼稚方法是使用for-loop。我们可以使用两个嵌套的for-loop来比较每个字符串和所有其他字符串,并按字母顺序排序。另外,我们可以说这是一种冒泡排序算法。
语法
用户可以按照下面的语法来使用冒泡排序算法对字符串按字母顺序进行排序。
for (let a = 0; a < strings.length; a++) {
for (let b = a + 1; b < strings.length; b++) {
if (strings[a] > strings[b]) {
// swap strings at index a and index b
}
}
}
在上面的语法中,我们使用了两个嵌套的for-loops,并对字符串数组进行了迭代。此外,我们还比较了两个字符串的值,并在此基础上交换了这些字符串。
算法
第1步 - 创建字符串数组。
第2步 - 使用for-loop,从第0个索引开始迭代字符串阵列。
第 3 步–在for-loop中,使用另一个for-loop,从第a+1个索引开始迭代,此时a是第一个for-loop的迭代指针。
第4步 - 现在,比较第a个和第b个索引的字符串。
第5步 --如果第a个索引处的字符串的字母顺序大于第b个索引处的,交换这两个字符串。
第6步 --完成两个for-loop的所有迭代,得到排序后的所有字符串。
例子2 (考虑字符串的情况)
在下面的例子中,我们实现了bubble-sort算法对字符串数组进行排序。下面的输出显示,bubble-sort算法对所有大写字母在小写字母之前的字符串进行排序,因为大写字母在字符串比较中比小写字母有更高的优先权。
<html>
<body>
<h2>Using the <i> bubble sort algorithm </i> to sort an array of strings in JavaScript.</h2>
<div id = "output"> </div>
<script>
let output = document.getElementById('output');
let strings = ["car", "Bike", "truck", "cycle", "Tempo", "cart", "abcd", "string"];
output.innerHTML += "The original string array is " + strings + "<br/>";
for (let a = 0; a < strings.length; a++) {
for (let b = a + 1; b < strings.length; b++) {
if (strings[a] > strings[b]) {
let tempString = strings[a];
strings[a] = strings[b];
strings[b] = tempString;
}
}
}
output.innerHTML += "The sorted string array is " + strings + "<br/>";
</script>
</body>
</html>
例3 (忽略字符串字符的大小写)
在这个例子中,我们实现了气泡排序算法来对字符串进行排序,但我们是以小写字母来比较字符串。在上面的例子中,我们根据字母顺序对字符串进行排序,并优先考虑大写字母的字符串。但在这里,我们忽略了字符串字符的大小写,并对字符串进行比较。
<html>
<body>
<h2>Using the <i> bubble sort algorithm </i> to sort an array of strings in JavaScript.</h2>
<div id = "output"> </div>
<button onclick = "sortStrings()"> Sort Strings </button>
<script>
let output = document.getElementById('output');
let strings = ["ab", "Bc", "AB", "AC", "cd", "ds", "ds", "erere", "DS"];
output.innerHTML += "The original strings are " + strings + "<br/>";
function sortStrings() {
function swap(index1, index2) {
let tempString = strings[index1];
strings[index1] = strings[index2];
strings[index2] = tempString;
}
for (let a = 0; a < strings.length; a++) {
for (let b = a + 1; b < strings.length; b++) {
if (strings[a].toLowerCase() > strings[b].toLowerCase()) {
swap(a, b)
}
}
}
output.innerHTML += "The sorted strings are " + strings + "<br/>";
}
</script>
</body>
</html>
我们在本教程中学习了对多个字符串进行排序。在第一种方法中,我们使用了sort()方法,因为它总是按字母顺序对字符串进行排序。在第二种方法中,我们实现了气泡排序算法来对字符串进行排序,但我们可以对它进行优化,使其具有时间效率。此外,我们还可以使用其他算法,如合并排序,使我们的排序算法具有时间和空间效率。