nutils-js
一个模块化、高性能的 JavaScript 实用工具库。
前端开发中经常会遇到Array
、Object
、String
、Number
等数据处理,或者是防抖节流函数等性能优化亦或是 URL 参数处理、类型判断等等操作,为了提高开发效率,我将这些常见公共方法进行抽离并封装好,发布在 npm 上,后续如有更优的写法也会做进一步的更新。另外读者朋友们如果有好的建议或者想为本项目贡献一份力的话,欢迎为本项目提交 pr,一起探讨和交流。
安装
$ npm i --save nutils-js
使用
const nutils = require('nutils-js')
nutils.multArray([1, 2, 3], 2)
API文档
数组
multArray
二维数组转换flatten
扁平化数组flattenDeep
指定层级扁平化数组isArrayEqual
检查两个数组各项相等allEqual
检查数组各项相等diffArray
具有唯一array
值的数组haveArr
具有共同array
值的数组uniqueArray
数组去重uniqueArrayObject
数组对象去重treeData
生成树结构数据ascArr
数组升序descArr
数组降序shuffle
随机排序takeArray
截取数组开始指定的元素takeLastArray
截取数组最后指定的元素cloneArray
克隆数组maxArray
数组中最大值validArray
去除数组中的无效值
对象
函数
字符串
数字
randomNumber
指定范围的随机整数average
求平均值averageBy
检查数组对象各项相等aboutEqual
两个值是否约等于getLineSize
计算两点之间的距离sum
数组中值总和
浏览器
环境
后续的更新,请点击
GitHub
仓库进行查看
如果对本文有啥疑问或建议,欢迎加我微信
qqlcx55
一起学习哈
一、数组
multArray
二维数组转换
将数组(array)拆分成多个子数组,并将这些子数组组成一个新数组。
multArray(array, count)
参数
array
需要处理的数组count = 8
子数组需要的长度
示例
multArray([1, 2, 3, 4, 5, 6, 7], 2)
=> [[1, 2], [3, 4], [5, 6], [7]]
multArray(['a', 'b', 'c', 'd'], 3)
=> [['a', 'b', 'c'], ['d']]
源码
function multArray(arr, count = 8) {
let pages = []
arr.forEach((item, index) => {
const page = Math.floor(index / count)
if (!pages[page]) pages[page] = []
pages[page].push(item)
})
return pages
}
flatten
扁平化数组
将多层嵌套数组(array)拆分成一个数组
flatten(array)
参数
array
多层嵌套数组
示例
flatten([1, [2], [3], [4, 5]])
// [1, 2, 3, 4, 5]
源码
// 扁平化 Map 方法
const flatten = arr => [].concat(...arr.map(v => (Array.isArray(v) ? flatten(v) : v)))
// 扁平化 reduce 方法
const flatten = arr => arr.reduce((a, c) => a.concat(Array.isArray(c) ? flatten(c) : c), [])
flattenDeep
指定层级扁平化数组
将多层嵌套数组(array)拆分成指定层级数组
flattenDeep(array, depth)
参数
array
多层嵌套数组depth =
减少的嵌套层级数
示例
flattenDeep([1, [2, [3, [4]], 5]], 1)
// => [1, 2, [3, [4]], 5]
// ES6方法 `flat(depth)`
;[1, [2, [3, [4]], 5]].flat(1)
// => [1, 2, [3, [4]], 5]
源码
const flattenDeep = (arr, depth = 1) => arr.reduce((a, v) => a.concat(depth > 1 && Array.isArray(v) ? flatten(v, depth - 1) : v), [])
isArrayEqual
检查两个数组各项相等
比较两个数组内的各项值是否相等,返回一个Boolean
值
isArrayEqual(array, array)
参数
array
要检查的数组array
要检查的数组
示例
isArrayEqual([6, 5, 2, 4, 1, 3], [1, 2, 3, 4, 5, 6])
// => true
isArrayEqual([6, 5, 2, 7, 1, 3], [1, 2, 3, 4, 5, 6])
// => false
源码
const isArrayEqual = (a, b, has = true) => {
if (a.length !== b.length) return (has = false)
const s = new Set(b)
if (a.find(x => !s.has(x))) return (has = false)
return has
}
allEqual
检查数组各项相等
allEqual(array)
参数
array
要检查的数组
示例
allEqual([1, 2, 3, 4, 5, 6])
// => false
allEqual([1, 1, 1, 1])
// => true
源码
const allEqual = arr => arr.every(val => val === arr[0])
diffArray
具有唯一array
值的数组
创建一个具有唯一 array 值的数组,每个值不包含在其他给定的数组中