最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JavaScript中map和filter方法綜合案例詳解

 更新時(shí)間:2025年09月26日 11:30:29   作者:Pu_Nine_9  
map和filter是兩個(gè)非常強(qiáng)大且常用的數(shù)組方法,它們可以幫助我們高效地處理數(shù)組數(shù)據(jù),本文將通過(guò)一個(gè)色彩輪播圖的示例,逐步介紹這兩個(gè)方法的使用,并提供一個(gè)綜合案例供讀者練習(xí),感興趣的朋友一起看看吧

在 JavaScript 編程中,數(shù)組操作是常見(jiàn)的任務(wù)之一。mapfilter 是兩個(gè)非常強(qiáng)大且常用的數(shù)組方法,它們可以幫助我們高效地處理數(shù)組數(shù)據(jù)。本文將通過(guò)一個(gè)色彩輪播圖的示例,逐步介紹這兩個(gè)方法的使用,并提供一個(gè)綜合案例供讀者練習(xí)。

基礎(chǔ)色彩輪播圖

首先,我們從一個(gè)簡(jiǎn)單的色彩輪播圖開(kāi)始。這個(gè)輪播圖會(huì)每隔一段時(shí)間改變背景顏色,并顯示當(dāng)前顏色的編號(hào)。

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <title>色彩輪播圖</title>
</head>
<body>
    <div id="container" style="height: 200px; width: 100px; text-align: center;">0</div>
    <script>
        const box = document.getElementById('container');
        const colorArray = [
            { color: '#FF5733', id: 1 }, // 紅色
            { color: '#33FF57', id: 2 }, // 綠色
            { color: '#3357FF', id: 3 }, // 藍(lán)色
            { color: '#FFFF33', id: 4 }, // 黃色
            { color: '#FF33FF', id: 5 } // 粉色
        ];
        let timer = 0;
        setInterval(() => {
            box.style.backgroundColor = colorArray[timer].color;
            box.innerText = colorArray[timer].id;
            timer = (timer + 1) % colorArray.length;
        }, 2000);
    </script>
</body>
</html>

在這個(gè)代碼中,我們定義了一個(gè)包含顏色和編號(hào)的數(shù)組 colorArray,并通過(guò) setInterval 每隔兩秒改變 div 的背景顏色和文本內(nèi)容。

使用 map 方法

map 方法是數(shù)組的一個(gè)高階函數(shù),它會(huì)創(chuàng)建一個(gè)新數(shù)組,其元素是調(diào)用一次提供的函數(shù)后的返回值。map 方法不會(huì)修改原數(shù)組,而是返回一個(gè)新的數(shù)組。

map 方法的原理

map 方法遍歷數(shù)組中的每個(gè)元素,并對(duì)每個(gè)元素執(zhí)行提供的函數(shù)。該函數(shù)的返回值將作為新數(shù)組的對(duì)應(yīng)元素。map 方法的簽名如下:

array.map(function(element, index, array) {
    // 對(duì)元素進(jìn)行操作并返回新值
}, thisArg);
  • element:當(dāng)前正在處理的元素。
  • index(可選):當(dāng)前正在處理的元素的索引。
  • array(可選):調(diào)用 map 方法的數(shù)組。
  • thisArg(可選):執(zhí)行回調(diào)時(shí)使用的 this 值。

示例代碼

在基礎(chǔ)輪播圖的基礎(chǔ)上,我們使用 map 方法對(duì)顏色數(shù)組的 id 進(jìn)行轉(zhuǎn)換,將每個(gè) id 乘以 3。

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <title>色彩輪播圖 - 使用 map 方法</title>
</head>
<body>
    <div id="container" style="height: 200px; width: 100px; text-align: center;">0</div>
    <script>
        const box = document.getElementById('container');
        const colorArray = [
            { color: '#FF5733', id: 1 }, // 紅色
            { color: '#33FF57', id: 2 }, // 綠色
            { color: '#3357FF', id: 3 }, // 藍(lán)色
            { color: '#FFFF33', id: 4 }, // 黃色
            { color: '#FF33FF', id: 5 } // 粉色
        ];
        let timer = 0;
        // 使用 map 方法對(duì) id 進(jìn)行轉(zhuǎn)換
        const newIdArrayInColorArray = colorArray.map(i => i.id * 3);
        console.log(newIdArrayInColorArray);
        setInterval(() => {
            box.style.backgroundColor = colorArray[timer].color;
            box.innerText = newIdArrayInColorArray[timer];
            timer = (timer + 1) % colorArray.length;
        }, 2000);
    </script>
</body>
</html>

在這個(gè)代碼中,map 方法創(chuàng)建了一個(gè)新的數(shù)組 newIdArrayInColorArray,其中每個(gè)元素是原數(shù)組中對(duì)應(yīng)元素的 id 乘以 3 的結(jié)果。

使用 filter 方法

filter 方法用于篩選數(shù)組中的元素,它會(huì)創(chuàng)建一個(gè)新數(shù)組,包含通過(guò)測(cè)試的所有元素。filter 方法同樣不會(huì)修改原數(shù)組,而是返回一個(gè)新的數(shù)組。

filter 方法的原理

filter 方法遍歷數(shù)組中的每個(gè)元素,并對(duì)每個(gè)元素執(zhí)行提供的函數(shù)。如果該函數(shù)返回 true,則當(dāng)前元素會(huì)被包含在新數(shù)組中。filter 方法的簽名如下:

array.filter(function(element, index, array) {
    // 返回布爾值
}, thisArg);
  • element:當(dāng)前正在處理的元素。
  • index(可選):當(dāng)前正在處理的元素的索引。
  • array(可選):調(diào)用 filter 方法的數(shù)組。
  • thisArg(可選):執(zhí)行回調(diào)時(shí)使用的 this 值。

示例代碼

在基礎(chǔ)輪播圖的基礎(chǔ)上,我們使用 filter 方法篩選出 id 為奇數(shù)的顏色。

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <title>色彩輪播圖 - 使用 filter 方法</title>
</head>
<body>
    <div id="container" style="height: 200px; width: 100px; text-align: center;">0</div>
    <script>
        const box = document.getElementById('container');
        const colorArray = [
            { color: '#FF5733', id: 1 }, // 紅色
            { color: '#33FF57', id: 2 }, // 綠色
            { color: '#3357FF', id: 3 }, // 藍(lán)色
            { color: '#FFFF33', id: 4 }, // 黃色
            { color: '#FF33FF', id: 5 } // 粉色
        ];
        let timer = 0;
        // 使用 filter 方法篩選出 id 為奇數(shù)的顏色
        const newColorArrayInOldColorArray = colorArray.filter(i => i.id % 2 !== 0);
        console.log(newColorArrayInOldColorArray);
        setInterval(() => {
            box.style.backgroundColor = newColorArrayInOldColorArray[timer].color;
            box.innerText = newColorArrayInOldColorArray[timer].id;
            timer = (timer + 1) % newColorArrayInOldColorArray.length;
        }, 2000);
    </script>
</body>
</html>

在這個(gè)代碼中,filter 方法創(chuàng)建了一個(gè)新的數(shù)組 newColorArrayInOldColorArray,其中只包含 id 為奇數(shù)的元素。

map 和 filter 的區(qū)別

最后我們?cè)诹私饬嘶居梅ㄒ约斑M(jìn)入綜合案例之前,通過(guò)表格來(lái)對(duì)比 mapfilter 的主要區(qū)別:

特性mapfilter
用途轉(zhuǎn)換數(shù)組元素篩選符合要求數(shù)組元素
返回值新數(shù)組,包含轉(zhuǎn)換后的元素新數(shù)組,包含通過(guò)測(cè)試的元素
空位處理保留空位跳過(guò)空位
是否修改原數(shù)組不修改不修改
返回?cái)?shù)組長(zhǎng)度與原數(shù)組等長(zhǎng)可能小于原數(shù)組長(zhǎng)度

綜合案例:篩選并轉(zhuǎn)換數(shù)組元素

為了進(jìn)一步鞏固對(duì) mapfilter 方法的理解,uo給大家提供一個(gè)綜合案例。假設(shè)我們有一個(gè)包含多個(gè)對(duì)象的數(shù)組,每個(gè)對(duì)象包含一個(gè)數(shù)字和一個(gè)字符串。我們需要篩選出數(shù)字大于 10 的對(duì)象,并將字符串轉(zhuǎn)換為大寫(xiě)。

初始數(shù)據(jù)

const dataArray = [
    { num: 5, str: 'apple' },
    { num: 15, str: 'banana' },
    { num: 8, str: 'cherry' },
    { num: 20, str: 'date' },
    { num: 3, str: 'elderberry' }
];

接下來(lái)請(qǐng)讀者自行練習(xí),答案up主附在下面了,寫(xiě)完了來(lái)對(duì)答案吧

綜合案例代碼

const dataArray = [
    { num: 5, str: 'apple' },
    { num: 15, str: 'banana' },
    { num: 8, str: 'cherry' },
    { num: 20, str: 'date' },
    { num: 3, str: 'elderberry' }
];
// TODO.1 使用 filter 方法篩選出 num 大于 10 的對(duì)象
const filteredArray = dataArray.filter(item => item.num > 10);
// TODO.2 使用 map 方法將字符串轉(zhuǎn)換為大寫(xiě)
const upperCaseArray = filteredArray.map(item => {
    return {
        num: item.num,
        str: item.str.toUpperCase() // toUpperCase() 方法將字符串中的所有字母字符轉(zhuǎn)換為大寫(xiě);對(duì)應(yīng)的相反方法是 toLowerCase()
    };
});
console.log(upperCaseArray);

答案

在這個(gè)綜合案例中,我們首先使用 filter 方法篩選出 num 大于 10 的對(duì)象,然后使用 map 方法將字符串轉(zhuǎn)換為大寫(xiě)。最終,我們得到了一個(gè)新的數(shù)組 upperCaseArray,其中包含篩選和轉(zhuǎn)換后的對(duì)象。

希望本文能幫助你快速上手 JavaScript 的 mapfilter 方法。通過(guò)實(shí)際的代碼示例和綜合案例,你可以更好地理解和應(yīng)用這兩個(gè)強(qiáng)大的數(shù)組方法。

到此這篇關(guān)于JavaScript中map和filter方法綜合案例詳解的文章就介紹到這了,更多相關(guān)js map 和 filter 方法內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論

武山县| 仪征市| 西林县| 渝北区| 镇远县| 南安市| 樟树市| 锡林郭勒盟| 通州区| 晋江市| 新沂市| 兴仁县| 环江| 苗栗市| 淮安市| 遵义县| 会同县| 昭苏县| 周至县| 海南省| 郁南县| 额尔古纳市| 宁强县| 福泉市| 屯昌县| 洪泽县| 金川县| 庆元县| 宽城| 新晃| 浦北县| 连云港市| 司法| 凤山县| 高邑县| 精河县| 万载县| 星子县| 鄂托克前旗| 邵武市| 阿合奇县|