摘要:遍歷集合,對(duì)集合中的每個(gè)元素執(zhí)行回調(diào)。因此,上面的判斷等價(jià)于是預(yù)先定義的空對(duì)象,內(nèi)部用于提前結(jié)束循環(huán)的標(biāo)志,并沒有對(duì)外公開。
_.each
遍歷集合,對(duì)集合中的每個(gè)元素執(zhí)行回調(diào)。
API Lo-Dash_.forEach(collection [, callback=identity, thisArg])
Aliaseseach
Argumentscollection (Array|Object|String): 要遍歷的集合
[callback=identity] (Function): 每次迭代中調(diào)用的函數(shù)
[thisArg] (任意): 綁定到callback的this
callback接受三個(gè)參數(shù): (value, index|key, collection)
Returns(Array, Object, String): 返回collection.
Underscore_.each(list, iterator, [context])
AliasesforEach
Argumentslist (Array|Object|String): 要遍歷的集合
iterator (Function): 每次迭代中調(diào)用的函數(shù)
[context] (任意): 綁定到callback的this
iterator接受三個(gè)參數(shù): (element|value, index|key, list)
Returns(Array, Object, String): 返回undefined.
NoteLo-Dash可以省略回調(diào)函數(shù),而Underscore則必須傳入
Lo-Dash可以通過(guò)在回調(diào)中返回false提前結(jié)束迭代
Lo-Dash會(huì)返回Collection從而允許鏈?zhǔn)讲僮鳎琔nderscore的返回值則是undefined
Example Lo-Dash_.forEach([1,2,3]) // => 返回[1,2,3] _([1, 2, 3]).forEach(alert).join(","); // => alert每個(gè)數(shù)字并返回"1,2,3" _.forEach({ "one": 1, "two": 2, "three": 3 }, alert); // => alert每個(gè)數(shù)字value(不保證按照定義的順序執(zhí)行)Underscore
_.each([1, 2, 3], alert); // => alert每個(gè)數(shù)字 _.each({one : 1, two : 2, three : 3}, alert); // => alert每個(gè)數(shù)字value(不保證按照定義的順序執(zhí)行)Source Lo-Dash
function forEach(collection, callback, thisArg) { var index = -1, length = collection ? collection.length : 0; callback = callback && typeof thisArg == "undefined" ? callback : lodash.createCallback(callback, thisArg); if (typeof length == "number") { while (++index < length) { if (callback(collection[index], index, collection) === false) { break; } } } else { forOwn(collection, callback); } return collection; }Underscore
var each = _.each = _.forEach = function(obj, iterator, context) { if (obj == null) return; if (nativeForEach && obj.forEach === nativeForEach) { obj.forEach(iterator, context); } else if (obj.length === +obj.length) { for (var i = 0, l = obj.length; i < l; i++) { if (iterator.call(context, obj[i], i, obj) === breaker) return; } } else { for (var key in obj) { if (_.has(obj, key)) { if (iterator.call(context, obj[key], key, obj) === breaker) return; } } } };Additional
obj.length === +obj.length
+obj: 將obj轉(zhuǎn)換成10進(jìn)制數(shù),否則返回NaN。因此,上面的判斷等價(jià)于obj.length && typeof obj.length == "number"
if (iterator.call(context, obj[i], i, obj) === breaker) return;
breaker是預(yù)先定義的空對(duì)象({}),Underscore內(nèi)部用于提前結(jié)束循環(huán)的標(biāo)志,并沒有對(duì)外公開。另外,因?yàn)閷?duì)象的===比較的是對(duì)象地址,所以就算用戶在自己的iterator中返回{},上述if仍然不成立
for in循環(huán)不會(huì)遍歷non-enumerable屬性,因此像Object的toString等就不會(huì)被迭代
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/78555.html
摘要:提供如下函數(shù),很是方便提供了常用的函數(shù)。建議使用,性能優(yōu)異很多的實(shí)現(xiàn)。補(bǔ)充了缺少的對(duì)字符串的操作,不過(guò)有些其實(shí)原生就帶了。與配合使用無(wú)壓力。其他語(yǔ)言被移植到了其他語(yǔ)言,例如和。 underscore提供如下函數(shù),很是方便: Underscore 提供了常用的函數(shù)。 Collections each map reduce reduceRight find filter whe...
摘要:一場(chǎng)恩怨,一段紛爭(zhēng),一段歷史。后來(lái)崛起,并內(nèi)置了庫(kù),從此一炮而紅??梢?,前端大戰(zhàn)以的完勝而告終。無(wú)疑,在目前瀏覽器不完全兼容的情況下,提供的是操作的最佳選擇。然而社區(qū)的意見偏向于,是唯一選擇。的貢獻(xiàn)者認(rèn)為,現(xiàn)狀不會(huì)改變。 這幾天更新我的之前寫的 Chrome 插件 ChromeSnifferPlus 可以探測(cè)正在使用的開源軟件或者 js 類庫(kù),兩天的時(shí)間增加了 20 多個(gè) js 庫(kù)的檢...
摘要:我用替換已經(jīng)有一段時(shí)間了。更快,支持,并且擁有所缺乏的特性。這真是太棒了同樣聲稱類似,但是使用惰性求值,并發(fā)布了一些令人印象深刻的速度比較。如果你使用,不管在哪里使用包括,你應(yīng)該花上幾分鐘切換到。 我用Lo-Dash替換Underscore已經(jīng)有一段時(shí)間了。Lo-Dash更快,支持AMD,并且擁有Underscore所缺乏的特性。同時(shí),Lo-Dash和Underscore是100%兼容...
摘要:主要區(qū)別是需要在聲明模塊時(shí)指定所有的依賴,通過(guò)形參傳遞依賴到模塊內(nèi)容中。 前言 昨天,公司同事問(wèn)了我如下一個(gè)問(wèn)題: showImg(https://segmentfault.com/img/bVWXYP?w=548&h=346); 說(shuō)他在看一個(gè)插件時(shí),看到了源碼結(jié)構(gòu)如截圖所示,他知道(function(){})()是一種立即執(zhí)行函數(shù),但是在截圖中,最后的那個(gè)圓括號(hào)里又寫了一個(gè)函數(shù)fun...
摘要:是前端常用的庫(kù),最近無(wú)意中發(fā)現(xiàn)原來(lái)它還有的移植?;窘榻B絕大部分函數(shù)都移植過(guò)來(lái)了。用的是,可是這個(gè)在中已經(jīng)用來(lái)表示了,所以改成了,雙下劃線。函數(shù)一覽絕大部分都移植過(guò)來(lái)了我自己更習(xí)慣寫原生。 underscore是前端常用的javascript庫(kù),最近無(wú)意中發(fā)現(xiàn)原來(lái)它還有PHP的移植。 基本介紹 絕大部分函數(shù)都移植過(guò)來(lái)了。underscore.js用的是_,可是這個(gè)在PHP中已經(jīng)用來(lái)...
閱讀 3121·2023-04-26 01:58
閱讀 961·2021-11-24 09:38
閱讀 3293·2021-09-03 10:29
閱讀 722·2021-08-21 14:10
閱讀 1497·2019-08-30 15:44
閱讀 3095·2019-08-30 14:10
閱讀 3222·2019-08-29 16:32
閱讀 1485·2019-08-29 12:48