国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

JavaScript數(shù)組循環(huán)遍歷總結(jié)

missonce / 3471人閱讀

摘要:如果省略,則將用作值返回值如果函數(shù)為所有數(shù)組元素返回,則為否則為。不為數(shù)組中缺少的元素調(diào)用該回調(diào)函數(shù)。數(shù)組元素的數(shù)字索引。方法會(huì)為中的每個(gè)元素調(diào)用函數(shù),直到返回,或直到到達(dá)數(shù)組的結(jié)尾。

這一部分應(yīng)該放在《JavaScript處理數(shù)組函數(shù)總結(jié)》里面的,但是。。。。。。沒有但是。

1. for

for循環(huán)最常用的地方是利用索引來(lái)遍歷數(shù)組:

var arr = ["Microsoft","Google","Apple","BUPT"];
var x,i;
for (i=0; i
2.for...in

for循環(huán)的一個(gè)變體是for ... in循環(huán),它可以把一個(gè)對(duì)象的所有屬性依次循環(huán)出來(lái):

var arr = [10,20,30];
for (var i in arr){
    console.log(i+" : "+typeof i);//0 : string
    console.log(arr[i]+" : "+typeof arr[i]);//10 : number
}

注意:

for ... in 是用來(lái)遍歷對(duì)象的屬性的,實(shí)際上JavaScript對(duì)象的所有屬性都是字符串,不過(guò)屬性對(duì)應(yīng)的值可以是任意數(shù)據(jù)類型。

由于Array也是對(duì)象,而它的每個(gè)元素的索引被視為對(duì)象的屬性,因此,for ... in循環(huán)可以直接循環(huán)出Array的索引,但得到的是String而不是Number

3. forEach()

forEach 從頭到尾遍歷數(shù)組,為每個(gè)元素調(diào)用制定的函數(shù)

function say(element, index, array){
    document.write("["+index+"] is "+element);
}
["one","two","three"].forEach(say);//[0] is one...

補(bǔ)充:

arrayObject.forEach(callback[, thisObject])

callback: 函數(shù)測(cè)試數(shù)組的每個(gè)元素
thisObject: 對(duì)象作為該執(zhí)行回調(diào)時(shí)使用

兼容性問題:forEach是一個(gè)JavaScript擴(kuò)展到ECMA-262標(biāo)準(zhǔn);因此它可能不存在在標(biāo)準(zhǔn)的其他實(shí)現(xiàn)。比如,FirefoxChromeArray 類型都有forEach的函數(shù),但是IE中中沒有。

兼容IE的方法:添加如下腳本

//Array.forEach implementation for IE support..
//https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/forEach
if (!Array.prototype.forEach) {
    Array.prototype.forEach = function(callback, thisArg) {
        var T, k;
        if (this == null) {
            throw new TypeError(" this is null or not defined");
        }
        var O = Object(this);
        var len = O.length >>> 0; // Hack to convert O.length to a UInt32
        if ({}.toString.call(callback) != "[object Function]") {
            throw new TypeError(callback + " is not a function");
        }
        if (thisArg) {
            T = thisArg;
        }
        k = 0;
        while (k < len) {
            var kValue;
            if (k in O) {
                kValue = O[k];
                callback.call(T, kValue, k, O);
            }
            k++;
        }
    };
}

引申:forEach實(shí)現(xiàn)的數(shù)組去重函數(shù):

Array.prototype.delrep = function(fun){

    if (this === null){
            throw new TypeError("this is null or not defined");
    }
    if (!fun){
        function fun(d){
            return d ;
        }
    } else {
        if (Object.prototype.toString.call(fun) != "[object Function]"){
            throw new TypeError(fun +"is not a function");
        }
    }
    
    var newArr = [];
    this.sort(function(a,b){
        return fun(a) > fun(b)? -1 : 1;
    });
    newArr.push(this[0]);
    this.forEach(function(d){
        if (fun(d) != fun(newArr[0])){
            newArr.unshift(d);
        }
    });
    return newArr;    
}

//測(cè)試實(shí)例1
[5,2,6,3,5,3,6,7,4].delrep();//[2,3,4,5,6,7]

data = [
    {
        name : "hihi",
        value: 123
    },
    {
        name : "guagua",
        value: 345
    },
    {
        name : "hihi",
        value: 567
    }
]
data.delrep(function(d){
    return d.name;
}); /* [
    {
        name : "hihi",
        value: 123
    },
    {
        name : "guagua",
        value: 345
    },
    {
        name : "hihi",
        value: 567
    }
] */
4.map

map 把數(shù)組的每個(gè)元素傳給指定的函數(shù),并返回一個(gè)數(shù)組。

function pow(x){
    return x*x;
}
[1,2,3,4].map(pow);//[1,4,9,16]
5.reduce

Arrayreduce()把一個(gè)函數(shù)作用在這個(gè)Array[x1, x2, x3...]上,這個(gè)函數(shù)必須接收兩個(gè)參數(shù),reduce()把結(jié)果繼續(xù)和序列的下一個(gè)元素做累積計(jì)算,其效果就是:

[x1,x2,x3,x4].reduce(f) = f(x4,f(x3,f(x1,x2)))
var arr = [1,2,3,4,5];
arr.reduce(function(a,b){
    return a*10+b;
});//12345
6.filter

filter 把數(shù)組的每個(gè)元素傳給指定的函數(shù),通過(guò)函數(shù)返回的布爾值決定是否在返回?cái)?shù)組中添加該元素

var arr = [" A","",undefined,null," ","c"];
var r = arr.filter(function(s){
    return s&&s.trim();// 注意:IE9以下的版本沒有trim()方法
});
arr;//["A","",undefined,null," ","c"]
r;//["A","C"]

注意:filter會(huì)返回一個(gè)新數(shù)組

7.every

確定數(shù)組的所有成員是否滿足指定的測(cè)試。

arrayObject.every(callback[, thisArg])

callback: 必需。一個(gè)接受最多三個(gè)參數(shù)的函數(shù)。 every 方法會(huì)為 arrayObject 中的每個(gè)元素調(diào)用 callback 函數(shù),直到 callback 返回 false,或直到到達(dá)數(shù)組的結(jié)尾。
thisArg: 可選。可在 callback 函數(shù)中為其引用 this 關(guān)鍵字的對(duì)象。如果省略 thisArg,則 undefined 將用作 this

返回值: 如果 callback 函數(shù)為所有數(shù)組元素返回 true,則為 true;否則為 false。如果數(shù)組沒有元素,則 every 方法將返回 true

注意:


every 方法會(huì)按升序順序?qū)γ總€(gè)數(shù)組元素調(diào)用一次 callback 函數(shù),直到 callback 函數(shù)返回 false。如果找到導(dǎo)致 callback 返回 false 的元素,則 every 方法會(huì)立即返回 false。否則,every 方法返回 true

不為數(shù)組中缺少的元素調(diào)用該回調(diào)函數(shù)。

除了數(shù)組對(duì)象之外,every 方法可由具有 length 屬性且具有已按數(shù)字編制索引的屬性名的任何對(duì)象使用。

回調(diào)函數(shù)語(yǔ)法

function callback(value,index,array)
可使用最多三個(gè)參數(shù)來(lái)聲明回調(diào)函數(shù)。

value:數(shù)組元素的值。
index:數(shù)組元素的數(shù)字索引。
array:包含該元素的數(shù)組對(duì)象。

// Create a function that returns true if the value is
// numeric and within range.
var checkNumericRange = function(value) {
    if (typeof value !== "number")
        return false;
    else 
        return value >= this.minimum && value <= this.maximum;
}

// Create an array of numbers.
var numbers = [10, 15, 19];

// Check whether the callback function returns true for
// all of the array values.
// The obj argument enables use of the this value
// within the callback function.

var obj = { minimum: 10, maximum: 20 }

if (numbers.every(checkNumericRange, obj))
    document.write ("All are within range.");
else
    document.write ("Some are not within range.");

// Output:
//   All are within range.
8.some

some方法和every方法的語(yǔ)法類似,不過(guò)some方法把數(shù)組的每個(gè)元素傳給指定的函數(shù),如果有調(diào)用返回trueevery函數(shù)返回true

arrayObject.some(callback[, thisArg])

callback: 必需。一個(gè)接受最多三個(gè)參數(shù)的函數(shù)。 every 方法會(huì)為 arrayObject 中的每個(gè)元素調(diào)用 callback 函數(shù),直到 callback 返回 true,或直到到達(dá)數(shù)組的結(jié)尾。
thisArg: 可選。可在 callback 函數(shù)中為其引用 this 關(guān)鍵字的對(duì)象。如果省略 thisArg,則 undefined 將用作 this

返回值: some 方法會(huì)按升序索引順序?qū)γ總€(gè)數(shù)組元素調(diào)用 callback 函數(shù),直到 callback 函數(shù)返回 true。如果找到導(dǎo)致 callback 返回 true 的元素,則 some 方法會(huì)立即返回 true。如果回調(diào)不對(duì)任何元素返回 true,則 some 方法會(huì)返回 false

參考

1.循環(huán)-廖雪峰官方網(wǎng)站
2.詳解JavaScript中的forEach()方法的使用
3.javascript的Foreach語(yǔ)法
4.javascript數(shù)組去重函數(shù)
5.ECMAScript 5中的數(shù)組新方法
6.every 方法 (Array) (JavaScript).aspx)

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/79443.html

相關(guān)文章

  • Javascript各種數(shù)組遍歷方法歸納總結(jié)和兼容寫法

    摘要:主要用于枚舉對(duì)象數(shù)組遍歷效率最低的方法。當(dāng)前數(shù)組元素的值。傳遞給函數(shù)的初始值注意對(duì)于空數(shù)組是不會(huì)執(zhí)行回調(diào)函數(shù)的。 前言 PS: 2018/04/26 優(yōu)化一下排版,重新梳理一下方法,補(bǔ)充一些信息,刪除JQuery庫(kù)用法,只講解Javascript自帶的, for in 語(yǔ)句用于遍歷數(shù)組或者對(duì)象的屬性(對(duì)數(shù)組或者對(duì)象的屬性進(jìn)行循環(huán)操作)。主要用于枚舉對(duì)象, 數(shù)組遍歷效率最低的方法。 va...

    Sanchi 評(píng)論0 收藏0
  • JavaScript循環(huán)遍歷你會(huì)用哪些?

    摘要:總結(jié)中的循環(huán)遍歷定義一個(gè)數(shù)組和對(duì)象經(jīng)常用來(lái)遍歷數(shù)組元素遍歷值為數(shù)組元素索引用來(lái)遍歷數(shù)組元素第一個(gè)參數(shù)為數(shù)組元素,第二個(gè)參數(shù)為數(shù)組元素索引,第三個(gè)參數(shù)為數(shù)組本身可選沒有返回值用來(lái)遍歷數(shù)組元素第一個(gè)參數(shù)為數(shù)組元素,第二個(gè)參數(shù)為數(shù)組元素索引,第三 總結(jié)JavaScript中的循環(huán)遍歷 定義一個(gè)數(shù)組和對(duì)象 const arr = [a, b, c, d, e, f]; const obj = ...

    CHENGKANG 評(píng)論0 收藏0
  • javascript遍歷方法總結(jié)

    摘要:總之,是用來(lái)循環(huán)帶有字符串的對(duì)象的方法。循環(huán)里引入了一種新的循環(huán)方法,它就是循環(huán),它既比傳統(tǒng)的循環(huán)簡(jiǎn)潔,同時(shí)彌補(bǔ)了和循環(huán)的短板。 forEach 循環(huán) JavaScript誕生已經(jīng)有20多年了,我們一直使用的用來(lái)循環(huán)一個(gè)數(shù)組的方法是這樣的: for (var index = 0; index < myArray.length; index++) { console.log(myAr...

    BothEyes1993 評(píng)論0 收藏0
  • javaScript數(shù)組遍歷方法總結(jié)

    摘要:首次調(diào)用回調(diào)函數(shù)時(shí),和可以是兩個(gè)值之一。否則返回張三男王小毛男李四男李四返回結(jié)果為李四男方法李四對(duì)于數(shù)組中的每個(gè)元素,方法都會(huì)調(diào)用一次回調(diào)函數(shù)采用升序索引順序,直到有元素返回。 數(shù)組遍歷方法 1.for循環(huán) 使用臨時(shí)變量,將長(zhǎng)度緩存起來(lái),避免重復(fù)獲取數(shù)組長(zhǎng)度,當(dāng)數(shù)組較大時(shí)優(yōu)化效果才會(huì)比較明顯。 for(var j = 0,j < arr.length;j++) { //執(zhí)行代碼 ...

    shiguibiao 評(píng)論0 收藏0
  • JavaScript中 for、for in、for of、forEach等使用總結(jié)

    摘要:等內(nèi)置的方法和屬性都是不可枚舉的北京北京可以遍歷可枚舉但對(duì)象,包括不是它本身但存在于原型鏈上的屬性。北京循環(huán)可迭代對(duì)象循環(huán)可迭代對(duì)象包括,,,,,類數(shù)組的對(duì)象比如對(duì)象對(duì)象以及生成器對(duì)象等。 在JavaScript中,我們經(jīng)常需要去循環(huán)迭代方法操作數(shù)組對(duì)象等,常見等循環(huán)方法有 for、for in、for of、forEach等。 1.for循環(huán) for循環(huán)是最基礎(chǔ)常見的一種循環(huán),圓括號(hào)...

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

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

0條評(píng)論

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