摘要:我們?cè)跀?shù)組系列一之棧與隊(duì)列中介紹了一些數(shù)組的用法。該方法接受兩個(gè)參數(shù),一個(gè)是元素每一項(xiàng)執(zhí)行的回調(diào)函數(shù),一個(gè)是可選參數(shù),回調(diào)函數(shù)運(yùn)行時(shí)的值。今天我們就說(shuō)這么多,希望你有所收獲,接下來(lái)還請(qǐng)繼續(xù)關(guān)注,我們繼續(xù)來(lái)說(shuō)數(shù)組的其他一系列的方法。
我們?cè)凇禷vascript數(shù)組系列一之棧與隊(duì)列》中介紹了一些數(shù)組的用法。比如:數(shù)組如何表現(xiàn)的和「?!挂粯?,用什么方法表現(xiàn)的和「隊(duì)列」一樣等等一些方法,因?yàn)?Javascript 中的數(shù)組方法眾多,所以我們沒(méi)有在一篇文章中介紹過(guò)多的東西,接下來(lái)我們就來(lái)了解數(shù)組的其他功能吧
正式開(kāi)始!
數(shù)組的迭代方法數(shù)組的迭代方法是我們?cè)陂_(kāi)發(fā)項(xiàng)目中使用頻率非常高、非常重要、非常高效,不僅如此這些方法還能使我們的代碼會(huì)非常簡(jiǎn)潔,可以這么說(shuō),如果你在開(kāi)發(fā)中不經(jīng)常使用這些方法的話,簡(jiǎn)直就是太可怕了。
比如我們?nèi)绾闻康奶砑?DOM 節(jié)點(diǎn)
let containerUl = document.getElementById("container"); let li; let peoples = [{name: "Liu", age: 14}, {name: "Li", age: 13}, {name: "Cao", age: 11}]; //for 循環(huán) for (let i = 0; i < peoples.length; i++) { li = document.createElement("li"); li.innerHTML = peoples[i].name + ":" + peoples[i].age; containerUl.appendChild(li); }; //數(shù)組的迭代方法,更加簡(jiǎn)潔 peoples.forEach((people) => { li = document.createElement("li"); li.innerHTML = people.name + ":" + people.age; containerUl.appendChild(li); })
上面只是舉了一個(gè)簡(jiǎn)單的例子,其實(shí)我們?cè)谌粘5拈_(kāi)發(fā)過(guò)程中遠(yuǎn)不止此,而且要比這個(gè)復(fù)雜的很多很多,所以如何高效的進(jìn)行工作的開(kāi)發(fā)是非常有必須要的。下面就從我們比較常用的一個(gè)一個(gè)的來(lái)說(shuō)起。
forEach()該方法對(duì)數(shù)組的每一個(gè)元素執(zhí)行給定的函數(shù),返回 undefined(或者說(shuō)無(wú)返回值)。
該方法接受兩個(gè)參數(shù),一個(gè)是元素每一項(xiàng)執(zhí)行的回調(diào)函數(shù),一個(gè)是可選參數(shù),回調(diào)函數(shù)運(yùn)行時(shí) this 的值。
傳入的回調(diào)函數(shù)會(huì)接受三個(gè)參數(shù)分別是:數(shù)組中的元素(item),元素的索引(index,可選),數(shù)組本身(array,可選)。
//語(yǔ)法 array.forEach(callback[, this]) array.forEach(callback(item, index, array){ //函數(shù)體,執(zhí)行的操作 }); //看個(gè)例子,本質(zhì)上與 for 循環(huán)一樣 let items = ["a", "b", "c"]; items.forEach(function (item) { console.log(item); }); for (let i = 0; i < items.length; i++) { console.log(items[i]) }
最后我們來(lái)看看 forEach() 方法的兼容性,直接上圖。
Chrome | Edge | Firefox | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|
Yes | Yes | 1.5 | 9 | Yes | Yes |
該方法對(duì)數(shù)組的每一個(gè)元素執(zhí)行給定的函數(shù),返回一個(gè)新的數(shù)組,新數(shù)組的結(jié)果是原數(shù)組中元素執(zhí)行方法后的結(jié)果。
該方法接受兩個(gè)參數(shù),一個(gè)是元素每一項(xiàng)執(zhí)行的回調(diào)函數(shù),一個(gè)是可選參數(shù),回調(diào)函數(shù)運(yùn)行時(shí) this 的值。
傳入的回調(diào)函數(shù)會(huì)接受三個(gè)參數(shù)分別是:數(shù)組中的元素(item),元素的索引(index,可選),數(shù)組本身(array,可選)。
//語(yǔ)法 var newArrs = array.map(callback[, this]) var newArrs = array.map(callback(item, index, array){ //return 執(zhí)行后的結(jié)果 }); //例子 let numbers = [1, 2, 3]; let newNumbers = numbers.map(x => x * x); console.log(newNumbers); //[1, 4, 9]
在我們?nèi)粘i_(kāi)發(fā)工作中,會(huì)遇到非常多的數(shù)據(jù)格式化的過(guò)程,利用這些方法可以大大方便我們的處理。
例如類(lèi)數(shù)組轉(zhuǎn)換為數(shù)組的過(guò)程
例如格式化需要的數(shù)據(jù)
let peoples = ["Liu", "Cao", "Pan"]; let peoplesInfo = peoples.map(people => { return { name: people, age: Math.floor(Math.random()*20) } }); console.log(peoplesInfo); // [{name: Liu, age: XX}, // {name: Cao, age: XX}, // {name: Pan, age: XX}]
當(dāng)然我們?cè)趯?shí)際工作中的數(shù)據(jù)復(fù)雜度遠(yuǎn)不止此,但是我們可以明顯感覺(jué)到這些方法處理數(shù)據(jù)的優(yōu)勢(shì)所在。
最后我們來(lái)看看 map() 方法的兼容性,直接上圖。
Chrome | Edge | Firefox | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|
Yes | Yes | 1.5 | 9 | Yes | Yes |
該方法也是對(duì)數(shù)組的每一個(gè)元素執(zhí)行給定的函數(shù),返回一個(gè)新的數(shù)組,新數(shù)組是由每項(xiàng)返回 true 的項(xiàng)組成。簡(jiǎn)單來(lái)說(shuō)就是篩選出來(lái)我們想要的。
該方法接受兩個(gè)參數(shù),一個(gè)是元素每一項(xiàng)執(zhí)行的回調(diào)函數(shù),一個(gè)是可選參數(shù),回調(diào)函數(shù)運(yùn)行時(shí) this 的值。
傳入的回調(diào)函數(shù)會(huì)接受三個(gè)參數(shù)分別是:數(shù)組中的元素(item),元素的索引(index,可選),數(shù)組本身(array,可選)。
//語(yǔ)法 var newArrs = array.filter(callback[, this]) var newArrs = array.filter(callback(item, index, array){ //return 滿足條件的項(xiàng) }); //例子 let numbers = [1, 2, 3, 4, 5]; let newNumbers = numbers.filter(x => x > 2); console.log(newNumbers); //[3, 4, 5]
「filter」方法在實(shí)際工作中也同樣有著很多的作用,例如:我們找出一群人中哪些是小朋友。
var peoples = [{name: "liu", age: 9}, {name: "jiang", age: 18}, {name: "cao", age: 20}, {name: "pan", age: 3}]; var childrens = peoples.filter(people => people.age < 10); console.log(childrens);
最后我們來(lái)看看 filter() 方法的兼容性,直接上圖。
Chrome | Edge | Firefox | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|
Yes | Yes | 1.5 | 9 | Yes | Yes |
該方法是對(duì)數(shù)組的每一個(gè)元素執(zhí)行給定的函數(shù),
如果數(shù)組中的每個(gè)元素都滿足給定的條件則返回 true,否則返回 false。
該方法接受兩個(gè)參數(shù),一個(gè)是元素每一項(xiàng)執(zhí)行的回調(diào)函數(shù),一個(gè)是可選參數(shù),回調(diào)函數(shù)運(yùn)行時(shí) this 的值。
傳入的回調(diào)函數(shù)會(huì)接受三個(gè)參數(shù)分別是:數(shù)組中的元素(item),元素的索引(index,可選),數(shù)組本身(array,可選)。
//語(yǔ)法 var newArrs = array.every(callback[, this]) var newArrs = array.every(callback(item, index, array){ //執(zhí)行方法 }); //例子 var number = [2, 3, 4, 5, 6]; var result1 = number.every(item => item > 4); console.log(result1); //false var result2 = number.every(item => item > 1); console.log(result2); //true
我們?cè)趤?lái)看看 every() 方法的兼容性,直接上圖。
Chrome | Edge | Firefox | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|
Yes | Yes | 1.5 | 9 | Yes | Yes |
該方法是對(duì)數(shù)組的每一個(gè)元素執(zhí)行給定的函數(shù),
如果數(shù)組中的有一個(gè)元素滿足條件則返回 true,如果全部不滿足條件則返回 false。
該方法接受兩個(gè)參數(shù),一個(gè)是元素每一項(xiàng)執(zhí)行的回調(diào)函數(shù),一個(gè)是可選參數(shù),回調(diào)函數(shù)運(yùn)行時(shí) this 的值。
傳入的回調(diào)函數(shù)會(huì)接受三個(gè)參數(shù)分別是:數(shù)組中的元素(item),元素的索引(index,可選),數(shù)組本身(array,可選)。
//語(yǔ)法 var newArrs = array.some(callback[, this]) var newArrs = array.some(callback(item, index, array){ //執(zhí)行方法 }); //例子 var number = [2, 3, 4, 5, 6]; var result1 = number.some(item => item < 1); console.log(result1); //false var result2 = number.some(item => item > 5); console.log(result2); //true
我們?cè)趤?lái)看看 some() 方法的兼容性,直接上圖。
Chrome | Edge | Firefox | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|
Yes | Yes | 1.5 | 9 | Yes | Yes |
可以看出 every 方法是全部返回 true 時(shí),整個(gè)函數(shù)才返回 true;some 方法則是全部返回 false 時(shí),整個(gè)函數(shù)才返回 false。
今天我們就說(shuō)這么多,希望你有所收獲,接下來(lái)還請(qǐng)繼續(xù)關(guān)注,我們繼續(xù)來(lái)說(shuō)數(shù)組的其他一系列的方法。
關(guān)注微信公眾號(hào):六小登登。領(lǐng)取全套學(xué)習(xí)資源
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/97632.html
摘要:該方法接受兩個(gè)參數(shù),一個(gè)是元素每一項(xiàng)執(zhí)行的回調(diào)函數(shù),一個(gè)是可選參數(shù),回調(diào)函數(shù)運(yùn)行時(shí)的值。 今天我們來(lái)繼續(xù) Javascript 數(shù)組系列的文章,上文 《Javascript數(shù)組系列二之迭代方法1》 我們說(shuō)到一些數(shù)組的迭代方法,我們?cè)陂_(kāi)發(fā)項(xiàng)目實(shí)戰(zhàn)的過(guò)程中熟練的使用可以大大提高我們的開(kāi)發(fā)效率以及數(shù)據(jù)的處理。接下來(lái)我們繼續(xù)來(lái)講解其他的一些迭代的方法。 天也黑了,時(shí)間也不早了,話不多說(shuō),擼起袖...
摘要:刪除數(shù)組元素的開(kāi)始索引需要?jiǎng)h除元素的個(gè)數(shù),插入數(shù)組的元素語(yǔ)法因?yàn)閰?shù)變化多樣,我們主要從三個(gè)方面來(lái)展示的用法。 今天是我們介紹數(shù)組系列文章的第五篇,也是我們數(shù)組系列的最后一篇文章,只是數(shù)據(jù)系列的結(jié)束,所以大家不用擔(dān)心,我們會(huì)持續(xù)的更新干貨文章。 生命不息,更新不止! 今天我們就不那么多廢話了,直接干貨開(kāi)始。 我們?cè)凇禞avascript數(shù)組系列一之棧與隊(duì)列》中描述我們是如何利用 pus...
摘要:本節(jié)講學(xué)習(xí)的多進(jìn)程。和之前的的不同點(diǎn)是丟向的函數(shù)有返回值,而的沒(méi)有返回值。所以接下來(lái)讓我們來(lái)看下這兩個(gè)進(jìn)程是否會(huì)出現(xiàn)沖突。 本節(jié)講學(xué)習(xí)Python的多進(jìn)程。 一、多進(jìn)程和多線程比較 多進(jìn)程 Multiprocessing 和多線程 threading 類(lèi)似, 他們都是在 python 中用來(lái)并行運(yùn)算的. 不過(guò)既然有了 threading, 為什么 Python 還要出一個(gè) multip...
package com.itheima.demo03.Map; import java.util.HashMap;import java.util.LinkedHashMap; /* java.util.LinkedHashMap entends HashMap Map 接口的哈希表和鏈接列表實(shí)現(xiàn),具有可預(yù)知的迭代順序。 底層原理: 哈希表+鏈表(記錄元素的順序) */public cla...
摘要:上圖是布局的計(jì)算模型。刪除方法刪除的只是布局保存的數(shù)據(jù),然后重繪畫(huà)面,如果你需要畫(huà)面平滑改變,修改繪圖實(shí)現(xiàn)方法即可,這里不再贅述。 作者:心葉時(shí)間:2018-11-06 14:47 clay項(xiàng)目Github地址:https://github.com/yelloxing/... 喜歡本項(xiàng)目的可以在github上給給star。 在繪制一些常見(jiàn)圖形的時(shí)候,比如關(guān)系圖,單個(gè)結(jié)點(diǎn)或連線并不難,麻...
閱讀 1771·2021-11-24 09:39
閱讀 2584·2021-11-18 10:07
閱讀 3793·2021-08-31 09:40
閱讀 3533·2019-08-30 15:44
閱讀 2698·2019-08-30 12:50
閱讀 3710·2019-08-26 17:04
閱讀 1525·2019-08-26 13:49
閱讀 1331·2019-08-23 18:05