lodash:
var _ = require('lodash');
一、Array
1. _.chunk(array,size):將一個數組分割成多個size長度的區塊,不足則剩余部分組成一個區塊。(新數組)
2. _.compact(array):去除一個數組中的假值(undefined,null,false,'',0,NaN)。(新數組)
3. _.concat(array,[values]):將array與任何數組或值連接在一起(新數組)
4. _.difference(array,array1):從array中將array1中有的值過濾掉。(新數組)
5. _.differenceBy(array, [values], [iteratee=_.identity])同上,不過首先使用迭代器分別迭代array 和 values中的每個元素,
返回的值作為比較值。(新數組)
6. _.drop(array, n)去除array前面的n個元素,默認值為1。
7. _.dropRight(array,n)去除array尾部的n個元素。默認值為1。
8. _.dropRightWhile(array, [predicate=_.identity])去除array中從 predicate 返回假值開始到尾部的部分(從右側開始)。
predicate 會傳入3個參數: (value, index, array)。
9. _.dropWhile(array, [predicate=_.identity])去除array中從起點開始到 predicate 返回假值結束部分。
10. _.fill(array, value, [start=0], [end=array.length])使用 value 值來填充(替換) array,從start位置開始(默認0),
到end位置結束(但不包含end位置)。(原數組)
11. _.findIndex(array, [predicate=_.identity], [fromIndex=0])該方法類似_.find,
區別是該方法返回第一個通過 predicate 判斷為真值的元素的索引值(index),而不是元素本身。
12._.findLastIndex(array, [predicate=_.identity], [fromIndex=array.length-1])
這個方式類似 _.findIndex, 區別是它是從右到左的迭代集合array中的元素。
13._.head(array)獲取數組 array 的第一個元素。
14._.flatten(array)減少一級array嵌套深度
15._.flattenDeep(array)將array遞歸為一維數組
16._.flattenDepth(array, [depth=1])根據depth遞歸減少array的嵌套層級
17._.fromPairs(pairs)返回一個由鍵值對pairs構成的對象。
18._.indexOf(array, value, [fromIndex=0])查詢數組中存在值得索引(默認起始位置0)
19._.initial(array)獲取數組中除了最后一個元素之外的所有元素。
20._.intersection([arrays])返回一個包含所有傳入數組交集元素的新數組。
21._.last(array)獲取array中的最后一個元素。
22._.nth(array, [n=0])獲取array數組的第n個元素。如果n為負數,則返回從數組結尾開始的第n個元素。
23._.pull(array, [values])移除數組array中所有和給定值相等的元素
24._.pullAll(array, values)這個方法類似 _.pull,區別是這個方法接收一個要移除值的數組。
25._.pullAt(array, [indexes])根據索引 indexes,移除array中對應的元素,並返回被移除元素的數組。
26._.remove(array, [predicate=_.identity])移除數組中predicate(斷言)返回為真值的所有元素,並返回移除元素組成的數組。
predicate(斷言) 會傳入3個參數: (value, index, array)。 返回移除元素組成的新數組
27._.sortedIndex(array, value)使用二進制的方式檢索來決定 value值 應該插入到數組中 盡可能小的索引位置,以保證array的排序。
28._.sortedIndexOf(array, value)這個方法類似 _.indexOf,除了它是在已經排序的數組array上執行二進制檢索。
29._.sortedLastIndex(array, value)此方法類似於 _.sortedIndex,除了 它返回 value值 在 array 中插入盡可能大的索引位置(index)。
30._.sortedLastIndexOf(array, value)這個方法類似 _.lastIndexOf,除了它是在已經排序的數組array上執行二進制檢索。
31._.sortedUniq(array)這個方法類似 _.uniq,除了它會優化排序數組。(返回新的不重復的數組)
32._.tail(array)獲取除了array數組第一個元素以外的全部元素。
33._.take(array, [n=1])創建一個數組切片,從array數組的起始元素開始提取n個元素。
34._.takeRight(array, [n=1])創建一個數組切片,從array數組的最后一個元素開始提取n個元素。
35._.union([arrays])創建一個按順序排列的唯一值的數組。(返回一個新的聯合數組)
36._.uniq(array)創建一個去重后的array數組副本。(返回新的去重后的數組)
37._.without(array, [values])創建一個剔除所有給定值的新數組(返回過濾值后的新數組)
二、collection集合
1._.forEach(collection, [iteratee=_.identity])其中函數參數為value,index。
2._.forEachRight(collection, [iteratee=_.identity])
3._.every(collection, [predicate=_.identity])通過 predicate(斷言函數) 檢查 collection(集合)中的 所有 元素是否都返回真值。
一旦 predicate(斷言函數) 返回假值,迭代就馬上停止(檢查后都都返回真值,那么就返回true,否則返回 false)
4._.filter(collection, [predicate=_.identity])
5._.find(collection, [predicate=_.identity], [fromIndex=0])(返回匹配元素,否則返回 undefined)
6._.findLast(collection, [predicate=_.identity], [fromIndex=collection.length-1])從右到左遍歷
7._.includes(collection, value, [fromIndex=0])檢查 value(值) 是否在 collection(集合) 中
8._.orderBy(collection, [iteratees=[_.identity]], [orders])如果沒指定 orders(排序),所有值以升序排序。
否則,指定為"desc" 降序,或者指定為 "asc" 升序,排序對應值。
9._.partition(collection, [predicate=_.identity])創建一個分成兩組的元素數組,第一組包含predicate(斷言函數)返回為 truthy(真值)的元素,
第二組包含predicate(斷言函數)返回為 falsey(假值)的元素。
10._.sample(collection)從collection(集合)中獲得一個隨機元素。
11._.sampleSize(collection, [n=1])從collection(集合)中獲得 n 個隨機元素。
12._.shuffle(collection)創建一個被打亂值的集合
13._.size(collection)返回collection(集合)的長度,如果集合是類數組或字符串,返回其 length ;
如果集合是對象,返回其可枚舉屬性的個數。
14._.some(collection, [predicate=_.identity])
通過 predicate(斷言函數) 檢查collection(集合)中的元素是否存在 任意 truthy(真值)的元素,
一旦 predicate(斷言函數) 返回 truthy(真值),遍歷就停止。
predicate 調用3個參數:(value, index|key, collection)。
15._.sortBy(collection, [iteratees=[_.identity]])
創建一個元素數組。 以 iteratee 處理的結果升序排序。 這個方法執行穩定排序,也就是說相同元素會保持原始排序。
三、Function
1._.after(n, func)_.before的反向函數;此方法創建一個函數,當他被調用n或更多次之后將馬上觸發func 。
2._.before(n, func)創建一個調用func的函數,通過this綁定和創建函數的參數調用func,調用次數不超過 n 次
3._.curry(func, [arity=func.length])柯里化函數
4._.debounce(func, [wait=0], [options={}])防抖動函數
5._.defer(func, [args])推遲調用func,直到當前堆棧清理完畢
6._.delay(func, wait, [args])延遲 wait 毫秒后調用 func。
7._.once(func)創建一個只能調用 func 一次的函數。 重復調用返回第一次調用的結果。
8._.throttle(func, [wait=0], [options={}])創建一個節流函數,在 wait 秒內最多執行 func 一次的函數
四、Lang
1._.castArray(value)如果 value 不是數組, 那么強制轉為數組。
2._.clone(value)創建一個value的淺拷貝。
3._.cloneDeep(value)深拷貝
4._.conformsTo(object, source)通過調用斷言source的屬性與 object 的相應屬性值,檢查 object是否符合 source。
5._.eq(value, other)執行 SameValueZero 比較兩者的值,來確定它們是否相等。
6._.gt(value, other)檢查 value是否大於 other。
7._.gte(value, other)檢查 value是否大於或者等於 other。
8._.isArguments(value)檢查 value 是否是一個類 arguments 對象。
9._.isArray(value)檢查 value 是否是 Array 類對象。
10._.isArrayBuffer(value)檢查 value 是否是 ArrayBuffer 對象。
11._.isBoolean(value)檢查 value 是否是原始 boolean 類型或者對象。
12._.isDate(value)檢查 value 是否是 Date 對象。
13._.isElement(value)檢查 value 是否是可能是 DOM 元素。
14._.isEmpty(value)檢查 value 是否為一個空對象,集合,映射或者set。
判斷的依據是除非是有枚舉屬性的對象,length 大於 0 的 arguments object, array, string 或類jquery選擇器。
15._.isEqual(value, other)執行深比較來確定兩者的值是否相等。
16._.isFinite(value)檢查 value 是否是原始有限數值。
17._.isFunction(value)檢查 value 是否是 Function 對象。
18._.isMatch(object, source)執行一個深度比較,來確定 object 是否含有和 source 完全相等的屬性值。
19._.isNative(value)檢查 value 是否是一個原生函數。
20._.isNil(value)檢查 value 是否是 null 或者 undefined。
21._.isNull(value)檢查 valuealue 是否是 null。
22._.isObject(value)檢查 value 是否為 Object 的 language type。
23._.isPlainObject(value)檢查 value 是否是普通對象。 也就是說該對象由 Object 構造函數創建,或者 [[Prototype]] 為 null 。
判斷是否是什么的太多了,反正你能想到的都有!!!
24._.lt(value, other)檢查 value 是否小於 other。
25._.lte(value, other)檢查 value 是否小於等於 other。
26._.toInteger(value)轉換 value 為一個整數。
五、Math
_.add
_.ceil(number,[precision=0])根據precision(精度,可為負值)向上舍入number
_.divide
_.floor 向下舍入
_.max
_.maxBy
_.mean 平均值
_.meanBy
_.min
_.minBy
_.multiply
_.round 四舍五入
_.subtract
_.sum 求和
_.sumBy
六、Number
1._.inRange(number, [start=0], end)檢查 n 是否在 start 與 end 之間,但不包括 end。 如果 end 沒有指定,那么 start 設置為0。
如果 start 大於 end,那么參數會交換以便支持負范圍。
2._.random([lower=0], [upper=1], [floating])產生一個包括 lower 與 upper 之間的數。 如果只提供一個參數返回一個0到提供數之間的數。
如果 floating 設為 true,或者 lower 或 upper 是浮點數,結果返回浮點數。
七、Object
1._.assignIn(object, [sources])這個方法類似 _.assign, 除了它會遍歷並繼承原型上的屬性。
2._.findKey(object, [predicate=_.identity])這個方法類似 _.find 。 除了它返回最先被 predicate 判斷為真值的元素 key,而不是元素本身。
3._.keysIn(object)創建一個 object 自身 和 繼承的可枚舉屬性名為數組。
4._.merge(object, [sources])該方法類似 _.assign, 除了它遞歸合並 sources 來源對象自身和繼承的可枚舉屬性到 object 目標對象。
5._.omit(object, [props])反向版 _.pick; 這個方法一個對象,這個對象由忽略屬性之外的object自身和繼承的可枚舉屬性組成。
(可以理解為刪除object對象的屬性)。
6._.pick(object, [props])創建一個從 object 中選中的屬性的對象。
七、Seq
1._.chain(value)創建一個lodash包裝實例,包裝value以啟用顯式鏈模式。要解除鏈必須使用 _#value 方法。
2._.tap(value, interceptor)這個方法調用一個 interceptor 並返回 value。interceptor調用1個參數: (value)。
該方法的目的是 進入 方法鏈序列以便修改中間結果。
八、String
1._.camelCase([string=''])轉換字符串string為 駝峰寫法。
2._.capitalize([string=''])轉換字符串string首字母為大寫,剩下為小寫。
3._.endsWith([string=''], [target], [position=string.length])檢查字符串string是否以給定的target字符串結尾。
position可以指定檢索的位置
4._.escape([string=''])轉義string中的 "&", "<", ">", '"', "'", 和 "`" 字符為HTML實體字符。
5._.escapeRegExp([string=''])轉義 RegExp 字符串中特殊的字符 "^", "$", "", ".", "*", "+", "?", "(", ")", "[", "]", "{", "}", 和 "|" in .
6._.kebabCase([string=''])轉換字符串string為 kebab case.
就是以-連接
7._.lowerCase([string=''])轉換字符串string以空格分開單詞,並轉換為小寫。
8._.lowerFirst([string=''])轉換字符串string的首字母為小寫。
9._.repeat([string=''], [n=1])重復 N 次給定字符串。
10_.snakeCase([string=''])轉換字符串string為 snake case.
就是以_連接
11._.startCase([string=''])轉換 string 字符串為 start case.
每個單詞的首字母大寫,其余不變。
12._.startsWith([string=''], [target], [position=0])檢查字符串string是否以 target 開頭。
13._.trim([string=''], [chars=whitespace])從string字符串中移除前面和后面的 空格 或 指定的字符。
14._.truncate([string=''], [options={}])截斷string字符串,如果字符串超出了限定的最大值。
被截斷的字符串后面會以 omission 代替,omission 默認是 "..."。
option包含length,omission,separator屬性
15._.unescape([string='']) _.escape的反向版。