在編寫 JavaScript 程序時(shí),我們經(jīng)常需要使用循環(huán)結(jié)構(gòu),特別是雙重循環(huán)結(jié)構(gòu),來處理數(shù)組或其他數(shù)據(jù)類型的嵌套。雙重循環(huán)可以讓我們遍歷多維數(shù)組、查找元素、計(jì)算結(jié)果等等。在此文章中,我們將介紹 JavaScript 中的雙重循環(huán)結(jié)構(gòu),并通過具體的例子來說明如何使用它。
首先,讓我們來看一個(gè)簡單的例子,使用雙重循環(huán)來遍歷一個(gè)二維數(shù)組:
<script>
var arr = [[1,2,3],[4,5,6],[7,8,9]];
for (var i = 0; i< arr.length; i++) {
for (var j = 0; j< arr[i].length; j++) {
console.log(arr[i][j]);
}
}
</script>
以上代碼使用了嵌套的 for 循環(huán)來遍歷一個(gè)二維數(shù)組。外層循環(huán)遍歷每一行,內(nèi)層循環(huán)遍歷每一列,輸出每一個(gè)元素的值。這是一個(gè)非常簡單的例子,但是它展示了循環(huán)嵌套的基本思路。
接下來,我們再來看一個(gè)例子,用雙重循環(huán)來遍歷一個(gè)對象數(shù)組,并且按照某個(gè)屬性值進(jìn)行排序:
<script>
var students = [
{name: "Tom", score: 80},
{name: "Jerry", score: 90},
{name: "Mickey", score: 70},
{name: "Donald", score: 85}
];
for (var i = 0; i< students.length; i++) {
for (var j = i + 1; j< students.length; j++) {
if (students[i].score< students[j].score) {
var temp = students[i];
students[i] = students[j];
students[j] = temp;
}
}
}
console.log(students);
</script>
以上代碼定義了一個(gè)數(shù)組 students,包含了多個(gè)學(xué)生的姓名和分?jǐn)?shù)。通過嵌套的 for 循環(huán),我們對數(shù)組進(jìn)行了排序,按照從高到低的順序排列了所有學(xué)生。這是一個(gè)非常有用的例子,它說明了雙重循環(huán)不僅可以用來遍歷數(shù)組,還可以用來進(jìn)行復(fù)雜的排序、查找等操作。
除了數(shù)組和對象,雙重循環(huán)還可以用來處理字符串、數(shù)字等數(shù)據(jù)類型。例如,在字符串中查找某個(gè)子串出現(xiàn)的次數(shù):
<script>
var str = "aabbccc";
var count = 0;
for (var i = 0; i< str.length; i++) {
for (var j = i + 1; j< str.length; j++) {
if (str[i] == str[j]) {
count++;
}
}
}
console.log(count);
</script>
以上代碼定義了一個(gè)字符串 str,然后使用嵌套循環(huán)來查找出現(xiàn)次數(shù)大于 1 的子串。外層循環(huán)遍歷每一個(gè)字符,內(nèi)層循環(huán)遍歷字符串中剩余的字符,如果找到相同的字符,則計(jì)數(shù)器加 1。最終輸出計(jì)數(shù)器的值,即為子串出現(xiàn)的次數(shù)。這個(gè)例子展示了雙重循環(huán)在字符串處理中的應(yīng)用。
綜上所述,雙重循環(huán)是 JavaScript 編寫中非常常用的數(shù)據(jù)結(jié)構(gòu),它可以處理多種數(shù)據(jù)類型和多種任務(wù),包括數(shù)組遍歷、排序、查找、字符串處理等等。只要掌握了雙重循環(huán)的基本語法和思路,就可以輕松地完成各種編程任務(wù)。