摘要:如果省略,則將用作值返回值如果函數(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. forfor循環(huán)最常用的地方是利用索引來(lái)遍歷數(shù)組:
var arr = ["Microsoft","Google","Apple","BUPT"]; var x,i; for (i=0; i2.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 }注意:
3. forEach()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
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)。比如,Firefox 和Chrome 的Array 類型都有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.mapmap 把數(shù)組的每個(gè)元素傳給指定的函數(shù),并返回一個(gè)數(shù)組。
function pow(x){ return x*x; } [1,2,3,4].map(pow);//[1,4,9,16]5.reduceArray的reduce()把一個(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; });//123456.filterfilter 把數(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.somesome方法和every方法的語(yǔ)法類似,不過(guò)some方法把數(shù)組的每個(gè)元素傳給指定的函數(shù),如果有調(diào)用返回true則every函數(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
摘要:主要用于枚舉對(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...
摘要:總結(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 = ...
摘要:總之,是用來(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...
摘要:首次調(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í)行代碼 ...
摘要:等內(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)...
閱讀 3672·2021-09-22 15:28
閱讀 1296·2021-09-03 10:35
閱讀 878·2021-09-02 15:21
閱讀 3474·2019-08-30 15:53
閱讀 3496·2019-08-29 17:25
閱讀 569·2019-08-29 13:22
閱讀 1555·2019-08-28 18:15
閱讀 2287·2019-08-26 13:57