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

資訊專欄INFORMATION COLUMN

Underscore和Lo-Dash中的Collections _.each

weakish / 1334人閱讀

摘要:遍歷集合,對集合中的每個元素執(zhí)行回調(diào)。因此,上面的判斷等價于是預先定義的空對象,內(nèi)部用于提前結(jié)束循環(huán)的標志,并沒有對外公開。

_.each

遍歷集合,對集合中的每個元素執(zhí)行回調(diào)。

API Lo-Dash

_.forEach(collection [, callback=identity, thisArg])

Aliases

each

Arguments

collection (Array|Object|String): 要遍歷的集合

[callback=identity] (Function): 每次迭代中調(diào)用的函數(shù)

[thisArg] (任意): 綁定到callbackthis

callback接受三個參數(shù): (value, index|key, collection)

Returns

(Array, Object, String): 返回collection.

Underscore

_.each(list, iterator, [context])

Aliases

forEach

Arguments

list (Array|Object|String): 要遍歷的集合

iterator (Function): 每次迭代中調(diào)用的函數(shù)

[context] (任意): 綁定到callbackthis

iterator接受三個參數(shù): (element|value, index|key, list)

Returns

(Array, Object, String): 返回undefined.

Note

Lo-Dash可以省略回調(diào)函數(shù),而Underscore則必須傳入

Lo-Dash可以通過在回調(diào)中返回false提前結(jié)束迭代

Lo-Dash會返回Collection從而允許鏈式操作,Underscore的返回值則是undefined

Example Lo-Dash
_.forEach([1,2,3])
// => 返回[1,2,3]

_([1, 2, 3]).forEach(alert).join(",");
// => alert每個數(shù)字并返回"1,2,3"

_.forEach({ "one": 1, "two": 2, "three": 3 }, alert);
// => alert每個數(shù)字value(不保證按照定義的順序執(zhí)行)
Underscore
_.each([1, 2, 3], alert);
// => alert每個數(shù)字
_.each({one : 1, two : 2, three : 3}, alert);
// => alert每個數(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進制數(shù),否則返回NaN。因此,上面的判斷等價于obj.length && typeof obj.length == "number"

if (iterator.call(context, obj[i], i, obj) === breaker) return;
breaker是預先定義的空對象({}),Underscore內(nèi)部用于提前結(jié)束循環(huán)的標志,并沒有對外公開。另外,因為對象的===比較的是對象地址,所以就算用戶在自己的iterator中返回{},上述if仍然不成立

for in循環(huán)不會遍歷non-enumerable屬性,因此像ObjecttoString等就不會被迭代

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

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

相關(guān)文章

  • underscore函數(shù)

    摘要:提供如下函數(shù),很是方便提供了常用的函數(shù)。建議使用,性能優(yōu)異很多的實現(xiàn)。補充了缺少的對字符串的操作,不過有些其實原生就帶了。與配合使用無壓力。其他語言被移植到了其他語言,例如和。 underscore提供如下函數(shù),很是方便: Underscore 提供了常用的函數(shù)。 Collections each map reduce reduceRight find filter whe...

    DevYK 評論0 收藏0
  • Lo-Dashunderscore,Prototype 與 jQuery,兩段恩怨情仇

    摘要:一場恩怨,一段紛爭,一段歷史。后來崛起,并內(nèi)置了庫,從此一炮而紅。可見,前端大戰(zhàn)以的完勝而告終。無疑,在目前瀏覽器不完全兼容的情況下,提供的是操作的最佳選擇。然而社區(qū)的意見偏向于,是唯一選擇。的貢獻者認為,現(xiàn)狀不會改變。 這幾天更新我的之前寫的 Chrome 插件 ChromeSnifferPlus 可以探測正在使用的開源軟件或者 js 類庫,兩天的時間增加了 20 多個 js 庫的檢...

    evin2016 評論0 收藏0
  • Lo-Dash 替換 underscore

    摘要:我用替換已經(jīng)有一段時間了。更快,支持,并且擁有所缺乏的特性。這真是太棒了同樣聲稱類似,但是使用惰性求值,并發(fā)布了一些令人印象深刻的速度比較。如果你使用,不管在哪里使用包括,你應該花上幾分鐘切換到。 我用Lo-Dash替換Underscore已經(jīng)有一段時間了。Lo-Dash更快,支持AMD,并且擁有Underscore所缺乏的特性。同時,Lo-Dash和Underscore是100%兼容...

    RyanQ 評論0 收藏0
  • 兼容多種模塊規(guī)范(AMD,CMD,Node)的代碼

    摘要:主要區(qū)別是需要在聲明模塊時指定所有的依賴,通過形參傳遞依賴到模塊內(nèi)容中。 前言 昨天,公司同事問了我如下一個問題: showImg(https://segmentfault.com/img/bVWXYP?w=548&h=346); 說他在看一個插件時,看到了源碼結(jié)構(gòu)如截圖所示,他知道(function(){})()是一種立即執(zhí)行函數(shù),但是在截圖中,最后的那個圓括號里又寫了一個函數(shù)fun...

    Shonim 評論0 收藏0
  • underscore.php

    摘要:是前端常用的庫,最近無意中發(fā)現(xiàn)原來它還有的移植?;窘榻B絕大部分函數(shù)都移植過來了。用的是,可是這個在中已經(jīng)用來表示了,所以改成了,雙下劃線。函數(shù)一覽絕大部分都移植過來了我自己更習慣寫原生。 underscore是前端常用的javascript庫,最近無意中發(fā)現(xiàn)原來它還有PHP的移植。 基本介紹 絕大部分函數(shù)都移植過來了。underscore.js用的是_,可是這個在PHP中已經(jīng)用來...

    winterdawn 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<