radash简介
radash 库是一个现代的 JavaScript 工具库,旨在提供一系列实用的函数,以简化常见的编程任务。它受到 lodash 和 ramda 等库的启发,但旨在提供更简洁和现代的 API。
GitHub
radash官方文档,得翻墙
radash镜像
radash对标工具lodashjs
radash特点
-
简洁的 API:radash 提供了一系列简洁的函数,用于处理数组、对象、字符串等数据类型。
-
模块化:库中的每个函数都是独立的,可以根据需要单独导入,有助于减少最终打包体积。
-
现代 JavaScript:radash 使用现代 JavaScript 语法和特性,如箭头函数、模板字符串等。
-
无依赖:radash 不依赖于其他库,可以独立使用。
-
易用性:API 设计直观,易于上手。
能做什么
-
数组操作:提供了一系列数组操作函数,如 map、filter、reduce、find 等。
-
对象操作:可以处理对象的键和值,如 keys、values、entries 等。
-
字符串操作:提供字符串处理函数,如 trim、split、join 等。
-
函数工具:提供函数相关的工具,如 curry、partial、compose 等。
-
逻辑操作:提供逻辑操作函数,如 and、or、not 等。
-
类型检查:提供类型检查函数,如 isArray、isObject、isString 等。
-
随机数生成:可以生成随机数或随机数组。
-
路径操作:提供路径操作函数,如 get、set、unset 等。
-
集合操作:提供集合操作函数,如 union、intersection、difference 等。
安装
npm i radash
tryit方法
tryit 方法相当于可以帮你给异步操作加一层 try catch,有利于操作的兜底以及错误的捕获
import { tryit } from 'radash'
const [err, user] = await tryit(api.users.find)(userId)
if (err){
return;
}
retry方法
retry 可以帮你做异步操作的失败重试,并且你可以配置重试延迟、重试次数
import { retry } from 'radash'
await retry({}, api.users.list)
await retry({ times: 10 }, api.users.list)
await retry({ times: 2, delay: 1000 }, api.users.list)
// exponential backoff
await retry({ backoff: i => 10**i }, api.users.list)
parallel 方法
parallel 你可以理解为它是 Promise.all 的加强版,它不止能帮你做多个异步操作的并发处理,还能帮你控制并发数量
import { parallel } from 'radash'
const userIds = [,2,3,4,5,6,7,8,9];
const users = await parallel(3, userIds, async() =>{
return await api.user.find(userId);
});
counting 方法
counting 可以帮你计算符合条件的项的个数
import { counting } from 'radash'
const peops = [
{name:'yyh1', age: 30}
{name:'yyh2', age: 25}
{name:'yyh3', age: 35}
]
const 30Age = counting(item => item.age > 30, peops)
range 方法
range 帮你创建一个指定范围内数字的数组
import { range } from 'radash'
const numbers = range(1,5);
// [1,2,3,4,5];
const numbers = range(5,0, -1);
// [5,4,3,2,1,0]
list方法
list 方法帮你创建一个包含指定元素的数组,有点类似于 Array.prototype.fill
import { list } from 'radash'
const repeatNumbers = list(3, 0);
// [0,0,0]
const custList = list(4, (index) =>index+1);
// [1,2,3,4]
pick方法
pick 用来从对象中选取所需的属性
import { pick } from 'radash'
const fish = {
name: 'Bass',
weight: 8,
source: 'lake',
barckish: false
}
pick(fish, ['name', 'source']) // => { name, source }
uid
生成唯一标识符
import { uid } from 'radash'
uid(7) // => UaOKdlW
uid(20, '*') // => dyJdbC*NsEgcnGjTHS
方法目录
Array
- alphabetical 按属性的字母顺序对对象数组进行排序
- boil 项目列表缩减为一项
- cluster 将列表拆分为给定大小的多个列表
- counting 创建一个包含项目出现次数的对象
- diff 创建两个数组之间的差异数组
- first 获取列表中的第一项
- flat 将数组数组展平为一维
- fork 根据条件将数组拆分为两个数组
- group 将数组中的项目分组
- intersects 确定两个数组是否有共同项
- iterate 迭代回调 n 次
- last 获取列表中的最后一项
- list 创建包含特定项目的列表
- max 从数组中获取最大项
- merge 合并两个列表并覆盖第一个列表中的项目
- min 从数组中获取最小项
- objectify 将列表转换为字典对象
- range 创建用于迭代的范围
- replaceOrAppend 替换数组中的项目,如果不匹配则追加
- replace 替换数组中的一项
- select 过滤并映射数组
- shift 将数组项移动 n 步
- sift 从列表中删除所有虚假项目比方说null,false,NaN
- sort 按数值属性对对象列表进行排序
- sum 将数组的所有项相加
- toggle 切换数组中某个项目的存在
- unique 从数组中删除重复项
- zipToObject 将多个数组组合成集合
- zip 将多个数组组合成集合
Async
- all 等待许多承诺
- defer 使用延迟函数运行异步函数
- guard 如果发生错误,则让函数返回未定义
- map 使用异步函数映射数组
- parallel 并行运行多个异步函数
- reduce 使用异步函数减少数组
- retry 如果失败则运行异步函数重试
- sleep 异步等待时间过去,await sleep(2000)
- tryit 将函数转换为错误优先函数
Curry
- chain 创建一个按顺序运行的函数链
- compose 创建函数组合
- debounce 创建防抖回调函数
- memo 记忆函数
- partial 创建 partial函数
- partob 创建 partob 函数
- proxied 创建动态代理对象
- throttle 截流
Number
- inRange 检查给定的数字是否介于两个数字之间
- toFloat 尽力将给定值转换为浮点数
- toInt 尽力将给定值转换为整数
Object
- assign 递归地将两个对象合并在一起
- clone 创建给定对象/值的浅表副本
- construct 根据关键路径和值构建对象
- crush 将深层对象展平为单一维度
- get 给定任意值和一个选择函数来获取所需的属性
- invert 反转对象的键和值
- keys 获取对象的所有键
- listify 将对象转换为列表
- lowerize 将所有对象键转换为小写
- mapEntries 映射对象的键和值,可同时修改键值和键名
- mapKeys 返回一个新对象,其中包含通过该函数映射的所有键,可修改键名
- mapValues 返回一个新对象,其中包含通过该函数映射的所有值,可修改值
- omit 给定一个对象和该对象中的键列表,返回一个不包含任何给定键的新对象
- pick 给定一个对象和该对象中的键列表,返回一个仅具有给定键的新对象
- set 使用路径键设置对象的值
- shake 从对象中删除不需要的值
- upperize 将所有对象键转换为大写
Random
- draw 从列表中获取随机项目
- random 生成随机数
- shuffle 随机打乱数组
- uid 生成唯一标识符
- series 创建有序系列对象
String
- camel 转驼峰
- capitalize 首字母大写
- dash 破折号连接
- pascal 首字母大写去空格
- snake 下划线连接
- template 搜索表达式将数据对象的值模板化为字符串
- title 按标题大小写格式格式化给定的字符串
- trim 修剪给定字符串中的所有前缀和后缀字符
Typed
- isArray 是否是数组
- isDate 是否是日期
- isEmpty 是否为空
- isEqual 是否相等
- isFloat 是否浮点数
- isFunction 是否函数
- isInt 是否整数
- isNumber 是否数字
- isObject 是否对象
- isPrimitive 是否为原始类型
- isPromise 是否为promise
- isString 是否字符串
- isSymbol 是否Symbol