成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Javascript數(shù)組系列二之迭代方法1

tylin / 675人閱讀

摘要:我們?cè)跀?shù)組系列一之棧與隊(duì)列中介紹了一些數(shù)組的用法。該方法接受兩個(gè)參數(shù),一個(gè)是元素每一項(xiàng)執(zhí)行的回調(diào)函數(shù),一個(gè)是可選參數(shù),回調(diào)函數(shù)運(yùn)行時(shí)的值。今天我們就說這么多,希望你有所收獲,接下來還請(qǐng)繼續(xù)關(guān)注,我們繼續(xù)來說數(shù)組的其他一系列的方法。

我們?cè)凇禷vascript數(shù)組系列一之棧與隊(duì)列》中介紹了一些數(shù)組的用法。比如:數(shù)組如何表現(xiàn)的和「棧」一樣,用什么方法表現(xiàn)的和「隊(duì)列」一樣等等一些方法,因?yàn)?Javascript 中的數(shù)組方法眾多,所以我們沒有在一篇文章中介紹過多的東西,接下來我們就來了解數(shù)組的其他功能吧

正式開始!

數(shù)組的迭代方法

數(shù)組的迭代方法是我們?cè)陂_發(fā)項(xiàng)目中使用頻率非常高、非常重要、非常高效,不僅如此這些方法還能使我們的代碼會(huì)非常簡潔,可以這么說,如果你在開發(fā)中不經(jīng)常使用這些方法的話,簡直就是太可怕了。

比如我們?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ù)組的迭代方法,更加簡潔
peoples.forEach((people) => {
    li = document.createElement("li");
    li.innerHTML = people.name + ":" + people.age;
    containerUl.appendChild(li);
})

上面只是舉了一個(gè)簡單的例子,其實(shí)我們?cè)谌粘5拈_發(fā)過程中遠(yuǎn)不止此,而且要比這個(gè)復(fù)雜的很多很多,所以如何高效的進(jìn)行工作的開發(fā)是非常有必須要的。下面就從我們比較常用的一個(gè)一個(gè)的來說起。

forEach()

該方法對(duì)數(shù)組的每一個(gè)元素執(zhí)行給定的函數(shù),返回 undefined(或者說無返回值)。

該方法接受兩個(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,可選)。

//語法
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])
}

最后我們來看看 forEach() 方法的兼容性,直接上圖。

Chrome Edge Firefox Internet Explorer Opera Safari
Yes Yes 1.5 9 Yes Yes
map()

該方法對(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,可選)。

//語法
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_發(fā)工作中,會(huì)遇到非常多的數(shù)據(jù)格式化的過程,利用這些方法可以大大方便我們的處理。

例如類數(shù)組轉(zhuǎn)換為數(shù)組的過程

});

例如格式化需要的數(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)不止此,但是我們可以明顯感覺到這些方法處理數(shù)據(jù)的優(yōu)勢所在。

最后我們來看看 map() 方法的兼容性,直接上圖。

Chrome Edge Firefox Internet Explorer Opera Safari
Yes Yes 1.5 9 Yes Yes
filter

該方法也是對(duì)數(shù)組的每一個(gè)元素執(zhí)行給定的函數(shù),返回一個(gè)新的數(shù)組,新數(shù)組是由每項(xiàng)返回 true 的項(xiàng)組成。簡單來說就是篩選出來我們想要的。

該方法接受兩個(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,可選)。

//語法
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);

最后我們來看看 filter() 方法的兼容性,直接上圖。

Chrome Edge Firefox Internet Explorer Opera Safari
Yes Yes 1.5 9 Yes Yes
every

該方法是對(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,可選)。

//語法
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è)趤砜纯?every() 方法的兼容性,直接上圖。

Chrome Edge Firefox Internet Explorer Opera Safari
Yes Yes 1.5 9 Yes Yes
some

該方法是對(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,可選)。

//語法
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è)趤砜纯?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。

今天我們就說這么多,希望你有所收獲,接下來還請(qǐng)繼續(xù)關(guān)注,我們繼續(xù)來說數(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://systransis.cn/yun/97632.html

相關(guān)文章

  • Javascript數(shù)組系列二之迭代方法2

    摘要:該方法接受兩個(gè)參數(shù),一個(gè)是元素每一項(xiàng)執(zhí)行的回調(diào)函數(shù),一個(gè)是可選參數(shù),回調(diào)函數(shù)運(yùn)行時(shí)的值。 今天我們來繼續(xù) Javascript 數(shù)組系列的文章,上文 《Javascript數(shù)組系列二之迭代方法1》 我們說到一些數(shù)組的迭代方法,我們?cè)陂_發(fā)項(xiàng)目實(shí)戰(zhàn)的過程中熟練的使用可以大大提高我們的開發(fā)效率以及數(shù)據(jù)的處理。接下來我們繼續(xù)來講解其他的一些迭代的方法。 天也黑了,時(shí)間也不早了,話不多說,擼起袖...

    fredshare 評(píng)論0 收藏0
  • Javascript數(shù)組系列五之增刪改和強(qiáng)大的 splice()

    摘要:刪除數(shù)組元素的開始索引需要?jiǎng)h除元素的個(gè)數(shù),插入數(shù)組的元素語法因?yàn)閰?shù)變化多樣,我們主要從三個(gè)方面來展示的用法。 今天是我們介紹數(shù)組系列文章的第五篇,也是我們數(shù)組系列的最后一篇文章,只是數(shù)據(jù)系列的結(jié)束,所以大家不用擔(dān)心,我們會(huì)持續(xù)的更新干貨文章。 生命不息,更新不止! 今天我們就不那么多廢話了,直接干貨開始。 我們?cè)凇禞avascript數(shù)組系列一之棧與隊(duì)列》中描述我們是如何利用 pus...

    chavesgu 評(píng)論0 收藏0
  • python綜合學(xué)習(xí)二之多進(jìn)程

    摘要:本節(jié)講學(xué)習(xí)的多進(jìn)程。和之前的的不同點(diǎn)是丟向的函數(shù)有返回值,而的沒有返回值。所以接下來讓我們來看下這兩個(gè)進(jìn)程是否會(huì)出現(xiàn)沖突。 本節(jié)講學(xué)習(xí)Python的多進(jìn)程。 一、多進(jìn)程和多線程比較 多進(jìn)程 Multiprocessing 和多線程 threading 類似, 他們都是在 python 中用來并行運(yùn)算的. 不過既然有了 threading, 為什么 Python 還要出一個(gè) multip...

    gityuan 評(píng)論0 收藏0
  • Map學(xué)習(xí)二之LinkedHash,HashTable,計(jì)算一個(gè)給定字符串的每個(gè)字符出現(xiàn)的次數(shù)

    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...

    Rocture 評(píng)論0 收藏0
  • clay教程二之布局的使用

    摘要:上圖是布局的計(jì)算模型。刪除方法刪除的只是布局保存的數(shù)據(jù),然后重繪畫面,如果你需要畫面平滑改變,修改繪圖實(shí)現(xiàn)方法即可,這里不再贅述。 作者:心葉時(shí)間:2018-11-06 14:47 clay項(xiàng)目Github地址:https://github.com/yelloxing/... 喜歡本項(xiàng)目的可以在github上給給star。 在繪制一些常見圖形的時(shí)候,比如關(guān)系圖,單個(gè)結(jié)點(diǎn)或連線并不難,麻...

    Forest10 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<