工具地址:https://github.com/BothEyes1993/bes-jstools
bes-jstools
100多個基礎(chǔ)常用JS函數(shù)和各種數(shù)據(jù)轉(zhuǎn)換處理集合大全,此工具包是在 outils 的基礎(chǔ)上,加上個人平時收集的代碼片段進行的二次整合
Browser Support
![]() IE
|
![]() Edge
|
![]() Chrome
|
![]() Firefox
|
![]() Opera
|
![]() Safari
|
|---|---|---|---|---|---|
| 7+ ? | Latest ? | Latest ? | Latest ? | Latest ? | 6.1+ ? |
Installing
npm install bes-jstools --save
Using nodejs
const BesUtils = require('bes-jstools')
Get on unpkg
<script src="https://unpkg.com/bes-jstools@1.1.4/dist/bes-utils.min.js"></script>
ES6 Module import
import BesUtils from 'bes-jstools'
API
-
基礎(chǔ)函數(shù)
- isNaN (val) 判斷是否非數(shù)值
- isFinite (val) 判斷是否為有限數(shù)值
- isUndefined (val) 判斷 Undefined
- isArray (val) 判斷是否數(shù)組
- isFloat (val) 判斷是否小數(shù)
- isInteger (val) 判斷是否整數(shù)
- isBoolean (val) 判斷是否 Boolean 對象
- isString (val) 判斷是否 String 對象
- isNumber (val) 判斷是否 Number 對象
- isRegExp (val) 判斷是否 RegExp 對象
- isObject (val) 判斷是否 Object 對象
- isPlainObject (val) 判斷是否是一個對象
- isDate (val) 判斷是否 Date 對象
- isError (val) 判斷是否 Error 對象
- isTypeError (val) 判斷是否 TypeError 對象
- isEmpty (val) 判斷是否為空,包括空對象、空數(shù)值、空字符串
- isNull (val) 判斷是否為 Null
- isSymbol (val) 判斷是否 Symbol 對象
- isArguments (val) 判斷是否 Arguments 對象
- isElement (val) 判斷是否 Element 對象
- isDocument (val) 判斷是否 Document 對象
- isWindow (val) 判斷是否 Window 對象
- isFormData (val) 判斷是否 FormData 對象
- isMap (val) 判斷是否 Map 對象
- isWeakMap (val) 判斷是否 WeakMap 對象
- isSet (val) 判斷是否 Set 對象
- isWeakSet (val) 判斷是否 WeakSet 對象
- isLeapYear (date) 判斷是否閏年
- isMatch (obj, source) 判斷屬性中的鍵和值是否包含在對象中
- isEqual (obj1, obj2) 深度比較兩個對象之間的值是否相等
- isEqualWith (obj1, obj2, func) 深度比較兩個對象之間的值是否相等,使用自定義比較函數(shù)
- isDateSame (date1, date2, format) 判斷兩個日期是否相同
-
常用函數(shù)
- toNumber ( num ) 轉(zhuǎn)數(shù)值
- toInteger ( num ) 轉(zhuǎn)整數(shù)
- toFixedNumber ( num, digits ) 和 Number.toFixed 類似,區(qū)別就是不會對小數(shù)進行四舍五入,結(jié)果返回數(shù)值
- toFixedString ( num, digits ) 和 Number.toFixed 類似,區(qū)別就是不會對小數(shù)進行四舍五入,結(jié)果返回字符串
- toArray ( array ) 將對象或者偽數(shù)組轉(zhuǎn)為新數(shù)組
- toStringJSON (str) 字符串轉(zhuǎn) JSON
- toJSONString (obj) JSON 轉(zhuǎn)字符串
- getType (obj) 獲取對象類型
- getSize ( obj ) 返回對象的長度
- uniqueId ( prefix ) 獲取一個全局唯一標識
- uniq ( array ) 數(shù)組去重
- union ( ...array ) 將多個數(shù)的值返回唯一的并集數(shù)組
- random ( min, max ) 獲取一個指定范圍內(nèi)隨機數(shù)
- range ( start, stop, step ) 序號列表生成函數(shù)
- clear (obj[, defs, assigns]) 清空對象; defs如果不傳(清空所有屬性)、如果傳對象(清空并繼承)、如果傳值(給所有賦值)
- remove (obj, iteratee) 移除對象屬性
- assign (destination, ...sources) 淺拷貝一個或者多個對象到目標對象中,如果第一值是true,則使用深拷貝
- clone (obj, deep) 淺拷貝/深拷貝
- destructuring (obj, ...target) 將一個或者多個對象值解構(gòu)到目標對象
- trim ( str ) 去除字符串左右兩邊的空格
- trimLeft ( str ) 去除字符串左邊的空格
- trimRight ( str ) 去除字符串右邊的空格
- escape ( str ) 轉(zhuǎn)義HTML字符串,替換&, <, >, ", ', `字符
- unescape ( str ) 反轉(zhuǎn) escape
- camelCase ( str ) 將帶駝峰字符串轉(zhuǎn)成字符串
- kebabCase ( str ) 將字符串轉(zhuǎn)成駝峰字符串
- repeat ( str, count ) 將字符串重復(fù) n 次
- padStart ( str, targetLength, padString ) 用指定字符從前面開始補全字符串
- padEnd ( str, targetLength [, padString] ) 用指定字符從后面開始補全字符串
- startsWith ( str, val [, startIndex] ) 判斷字符串是否在源字符串的頭部
- endsWith ( str, val [, startIndex] ) 判斷字符串是否在源字符串的尾部
- slice ( array, start, end ) 裁剪 Arguments 或數(shù)組 array,從 start 位置開始到 end 結(jié)束,但不包括 end 本身的位置
- indexOf (obj, val) 返回對象第一個索引值
- findIndexOf (obj, iteratee [, context]) 返回對象第一個索引值
- lastIndexOf (obj, val) 從最后開始的索引值,返回對象第一個索引值
- findLastIndexOf (obj, iteratee [, context]) 從最后開始的索引值,返回對象第一個索引值
- includes (obj, val) 判斷對象是否包含該值,成功返回 true 否則 false
- includeArrays (array1, array2) 判斷數(shù)組是否包含另一數(shù)組
- each ( obj, iteratee [, context] ) 通用迭代器
- arrayEach ( obj, iteratee [, context] ) 數(shù)組迭代器
- objectEach ( obj, iteratee [, context] ) 對象迭代器
- lastEach ( obj, iteratee [, context] ) 通用迭代器,從最后開始迭代
- lastArrayEach ( obj, iteratee [, context] ) 數(shù)組迭代器,從最后開始迭代
- lastObjectEach ( obj, iteratee [, context] ) 對象迭代器,從最后開始迭代
- lastForOf ( obj, iteratee [, context] ) 通用迭代器,從最后開始迭代,支持 return false 跳出循環(huán) break
- has (obj, property) 檢查鍵、路徑是否是該對象的屬性
- get (obj, property, defaultValue) 獲取對象的屬性的值,如果值為 undefined,則返回默認值
- set ( obj, property, value ) 設(shè)置對象屬性上的值。如果屬性不存在則創(chuàng)建它
- keys (obj) 獲取對象所有屬性
- values (obj) 獲取對象所有值
- entries (obj) 獲取對象所有屬性、值
- first (obj) 獲取對象第一個值
- last (obj) 獲取對象最后一個值
- groupBy ( obj, iteratee [, context] ) 集合分組,默認使用鍵值分組,如果有 iteratee 則使用結(jié)果進行分組
- countBy ( obj, iteratee [, context] ) 集合分組統(tǒng)計,返回各組中對象的數(shù)量統(tǒng)計
- sortBy ( arr, iteratee [, context] ) 數(shù)組按屬性值升序
- shuffle ( array ) 將一個數(shù)組隨機打亂,返回一個新的數(shù)組
- sample ( array, number ) 從一個數(shù)組中隨機返回幾個元素
- some ( obj, iteratee [, context] ) 對象中的值中的每一項運行給定函數(shù),如果函數(shù)對任一項返回 true,則返回 true,否則返回 false
- every ( obj, iteratee [, context] ) 對象中的值中的每一項運行給定函數(shù),如果該函數(shù)對每一項都返回 true,則返回 true,否則返回 false
- filter ( obj, iteratee [, context] ) 根據(jù)回調(diào)過濾數(shù)據(jù)
- find ( obj, iteratee [, context] ) 查找匹配第一條數(shù)據(jù)
- findKey ( obj, iteratee [, context] ) 查找匹配第一條數(shù)據(jù)的鍵
- map ( obj, iteratee [, context] ) 指定方法后的返回值組成的新數(shù)組
- objectMap ( obj, iteratee [, context] ) 指定方法后的返回值組成的新對象
- zipObject ( props, values ) 根據(jù)鍵數(shù)組、值數(shù)組對轉(zhuǎn)換為對象
- pick (obj, array) 根據(jù) keys 過濾指定的屬性值 或者 接收一個判斷函數(shù),返回一個新的對象
- omit (obj, array) 根據(jù) keys 排除指定的屬性值 或者 接收一個判斷函數(shù),返回一個新的對象
- copyWithin ( array, target, start [, end] ) 淺復(fù)制數(shù)組的一部分到同一數(shù)組中的另一個位置,數(shù)組大小不變
- sum ( obj, iteratee [, context] ) 求和函數(shù),將數(shù)值相加
- mean ( obj, iteratee [, context] ) 求平均值函數(shù)
- reduce ( array, iteratee [, initialValue] ) 接收一個函數(shù)作為累加器,數(shù)組中的每個值(從左到右)開始合并,最終為一個值
- chunk ( array, size ) 將一個數(shù)組分割成大小的組。如果數(shù)組不能被平均分配,那么最后一塊將是剩下的元素
- min ( arrb[, iteratee] ) 獲取最小值
- max ( arr [, iteratee] ) 獲取最大值
- commafy ( num [, options] ) 數(shù)值千分位分隔符、小數(shù)點
-
日期函數(shù)
- now ( ) 返回當前時間戳
- timestamp ( date[, format] ) 將日期轉(zhuǎn)為時間戳
- toStringDate ( str, format ) 任意格式字符串轉(zhuǎn)為日期
- toDateString ( date [, format, options] ) 日期格式化為任意格式字符串
- getWhatYear ( date, year [, month] ) 返回前幾年或后幾年的日期,可以指定年的最初時間(first)、年的最后時間(last)、年的月份(0~11),默認當前
- getWhatMonth ( date, month [, day] ) 返回前幾月或后幾月的日期,可以指定月初(first)、月末(last)、天數(shù),默認當前
- getWhatWeek ( date, week [, day] ) 返回前幾周或后幾周的日期,可以指定星期幾(0~6),默認當前
- getWhatDay ( date, day [, mode] ) 返回前幾天或后幾天的日期,可以指定當天最初時間(first)、當天的最后時間(last)
- getDayOfYear ( date [, year] ) 返回某個年份的天數(shù),可以指定前幾個年或后幾個年,默認當前
- getYearDay ( date ) 返回某個年份的第幾天
- getYearWeek ( date ) 返回某個年份的第幾周
- getMonthWeek ( date ) 返回某個月份的第幾周
- getDayOfMonth ( date [, month] ) 返回某個月份的天數(shù),可以指定前幾個月或后幾個月,默認當前
- getDateDiff ( startDate, endDate [, rules] ) 返回兩個日期之間差距,如果結(jié)束日期小于開始日期 done 為 fasle
-
高級函數(shù)
- toArrayTree ( array, options ) 一個高性能的樹結(jié)構(gòu)轉(zhuǎn)換函數(shù),將一個帶層級的數(shù)據(jù)列表轉(zhuǎn)成樹結(jié)構(gòu)
- toTreeArray ( array, options ) 將一個樹結(jié)構(gòu)轉(zhuǎn)成數(shù)組列表
- findTree ( obj, iterate[, options, context] ) 從樹結(jié)構(gòu)中查找匹配第一條數(shù)據(jù)的鍵、值、路徑
- eachTree ( obj, iterate[, options, context] ) 從樹結(jié)構(gòu)中遍歷數(shù)據(jù)的鍵、值、路徑
- mapTree ( obj, iterate[, options, context] ) 從樹結(jié)構(gòu)中指定方法后的返回值組成的新數(shù)組
- filterTree ( obj, iterate[, options, context] ) 從樹結(jié)構(gòu)中根據(jù)回調(diào)過濾數(shù)據(jù)
- property ( path ) 返回一個獲取對象屬性的函數(shù)
- pluck ( array, key ) 獲取數(shù)組對象中某屬性值,返回一個數(shù)組
- invoke ( list, path, ...arguments ) 在list的每個元素上執(zhí)行方法,任何傳遞的額外參數(shù)都會在調(diào)用方法的時候傳遞給它
- zip ( ) 將每個數(shù)組中相應(yīng)位置的值合并在一起
- unzip ( arrays ) 與 zip 相反
- delay (callback, wait[, ...arguments]) 該方法和 setTimeout 一樣的效果,區(qū)別就是支持額外參數(shù)
- bind (callback, context[, ...arguments]) 創(chuàng)建一個綁定上下文的函數(shù)
- once (callback, context[, ...arguments]) 創(chuàng)建一個只能調(diào)用一次的函數(shù),只會返回第一次執(zhí)行后的結(jié)果
- after (count, callback, context) 創(chuàng)建一個函數(shù), 調(diào)用次數(shù)超過 count 次之后執(zhí)行回調(diào)并將所有結(jié)果記住后返回
- before (count, callback, context) 創(chuàng)建一個函數(shù), 調(diào)用次數(shù)不超過 count 次之前執(zhí)行回調(diào)并將所有結(jié)果記住后返回
- throttle (callback, wait[, options]) 創(chuàng)建一個策略函數(shù),當被重復(fù)調(diào)用函數(shù)的時候,至少每隔多少秒毫秒調(diào)用一次該函數(shù)
- debounce (callback, wait[, options]) 創(chuàng)建一個防反跳策略函數(shù),在函數(shù)最后一次調(diào)用多少毫秒之后才會再次執(zhí)行,如果在期間內(nèi)重復(fù)調(diào)用會重新計算延遲
- 瀏覽器函數(shù)





