Radash 中文文档 整理常用 API

正在替代 lodash 的新JS工具, 旧的 lodash 语法太老, 新的 radash 集合了 ES6 语法, 效率更高

安装 :

npm i radash

常用API整理 :

数组 API :

1. 数组排序 alphabetical 

按字母顺序, 正序倒序排列

import { alphabetical } from 'radash'const gods = [{name: 'Ra',power: 100},{name: 'Zeus',power: 98},{name: 'Loki',power: 72},{name: 'Vishnu',power: 100}
]alphabetical(gods, g => g.name) // => [Loki, Ra, Vishnu, Zeus]
alphabetical(gods, g => g.name, 'desc') // => [Zeus, Vishnu, Ra, Loki]

2. 取数组最大最小值 boil 

import { boil } from 'radash'const gods = [{name: 'Ra',power: 100},{name: 'Zeus',power: 98},{name: 'Loki',power: 72}
]boil(gods, (a, b) => (a.power > b.power ? a : b)) 
// => { name: 'Ra', power: 100 }

3. 拆分指定长度数组, 组成二维数组 cluster 

import { cluster } from 'radash'const gods = ['Ra', 'Zeus', 'Loki', 'Vishnu', 'Icarus', 'Osiris', 'Thor', 'Apollo', 'Artemis', 'Athena']cluster(gods, 3)
// => [
//   [ 'Ra', 'Zeus', 'Loki' ],
//   [ 'Vishnu', 'Icarus', 'Osiris' ],
//   ['Thor', 'Apollo', 'Artemis'],
//   ['Athena']
// ]

4. 统计数组元素出现的次数 counting 

import { counting } from 'radash'const gods = [{name: 'Ra',culture: 'egypt'},{name: 'Zeus',culture: 'greek'},{name: 'Loki',culture: 'greek'}
]counting(gods, g => g.culture) // => { egypt: 1, greek: 2 }

5. 获取数组的第一个元素, 如果不存在任何项目,则返回第一个项目或默认值 first 

import { first } from 'radash'const gods = ['ra', 'loki', 'zeus']first(gods) // => 'ra'
first([], 'vishnu') // => 'vishnu'

6. 展平多维数组 flat 

import { flat } from 'radash'const gods = [['ra', 'loki'], ['zeus']]flat(gods) // => [ra, loki, zeus]

7. 对数组对象以某个元素进行分组 group 

import { group } from 'radash'const fish = [{name: 'Marlin',source: 'ocean'},{name: 'Bass',source: 'lake'},{name: 'Trout',source: 'lake'}
]const fishBySource = group(fish, f => f.source)// 输出 fishBySource 
{"ocean": [{"name": "Marlin","source": "ocean"}],"lake": [{"name": "Bass","source": "lake"},{"name": "Trout","source": "lake"}]
}

8. 判断两个数组中元素是否有相同 intersects 

import { intersects } from 'radash'const oceanFish = ['tuna', 'tarpon']
const lakeFish = ['bass', 'trout']intersects(oceanFish, lakeFish) // => falseconst brackishFish = ['tarpon', 'snook']intersects(oceanFish, brackishFish) // => true

9. 获取数组最后一个元素 ,如果不存在任何项目,则返回最后一个项目或默认值 last 

import { last } from 'radash'const fish = ['marlin', 'bass', 'trout']const lastFish = last(fish) // => 'trout'
const lastItem = last([], 'bass') // => 'bass'

9. 返回数组中最大值 max 

import { max } from 'radash'const fish = [{name: 'Marlin',weight: 105,source: 'ocean'},{name: 'Bass',weight: 8,source: 'lake'},{name: 'Trout',weight: 13,source: 'lake'}
]max(fish, f => f.weight) // => {name: "Marlin", weight: 105, source: "ocean"}

10. 合并数组对象, 并覆盖相同 key 值的对象 merge 

import { merge } from 'radash'const gods = [{name: 'Zeus',power: 92},{name: 'Ra',power: 97}
]const newGods = [{name: 'Zeus',power: 100}
]merge(gods, newGods, f => f.name) 
// => [{name: "Zeus" power: 100}, {name: "Ra", power: 97}]

11. 返回数组中最小值 min 

import { min } from 'radash'const fish = [{name: 'Marlin',weight: 105,source: 'ocean'},{name: 'Bass',weight: 8,source: 'lake'},{name: 'Trout',weight: 13,source: 'lake'}
]min(fish, f => f.weight) // => {name: "Bass", weight: 8, source: "lake"}

12. 替换数组元素, 仅替换第一个匹配项 replace 

import { replace } from 'radash'const fish = [{name: 'Marlin',weight: 105},{name: 'Bass',weight: 8},{name: 'Trout',weight: 13}
]const salmon = {name: 'Salmon',weight: 22
}// read: replace fish with salmon where the name is Bass
replace(fish, salmon, f => f.name === 'Bass')// 输出
[{"name": "Marlin","weight": 105},{"name": "Salmon","weight": 22},{"name": "Trout","weight": 13}
]

13. 数组元素整体向右移动 n 个位置 shift 

import { shift } from 'radash'
const arr = [1, 2, 3, 4, 5, 6, 7, 8, 9]
shift(arr, 3) // => [7, 8, 9, 1, 2, 3, 4, 5, 6]

14. 过滤出数组中虚假的元素 sift 

import { sift } from 'radash'const fish = ['salmon', null, false, NaN, 'sockeye', 'bass']sift(fish) // => ['salmon', 'sockeye', 'bass']

15. 数组排序, 按照数字大小正序倒序排列 sort 

import { sort } from 'radash'const fish = [{name: 'Marlin',weight: 105},{name: 'Bass',weight: 8},{name: 'Trout',weight: 13}
]sort(fish, f => f.weight) // => [bass, trout, marlin]
sort(fish, f => f.weight, true) // => [marlin, trout, bass]

16. 数组元素求和 sum 

import { sum } from 'radash'const fish = [{name: 'Marlin',weight: 100},{name: 'Bass',weight: 10},{name: 'Trout',weight: 15}
]sum(fish, f => f.weight) // => 125

17. 数组删除和添加元素, 已包含则删除, 未包含则添加 toggle 

import { toggle } from 'radash'const gods = ['ra', 'zeus', 'loki']toggle(gods, 'ra')     // => [zeus, loki]
toggle(gods, 'vishnu') // => [ra, zeus, loki, vishnu]

18. 数组去重 unique 

import { unique } from 'radash'const fish = [{name: 'Marlin',weight: 105,source: 'ocean'},{name: 'Salmon',weight: 22,source: 'river'},{name: 'Salmon',weight: 22,source: 'river'}
]unique( fish, f => f.name )
// [
//     { name: 'Marlin', weight: 105, source: 'ocean' },
//     { name: 'Salmon', weight: 22, source: 'river' }
// ]

19. 两个数组合并成一个对象 zipToObject 

import { zipToObject } from 'radash'const names = ['ra', 'zeus', 'loki']
const cultures = ['egypt', 'greek', 'norse']zipToObject(names, cultures)
// => { ra: egypt, zeus: greek, loki: norse }zipToObject(names, (k, i) => k + i)
// => { ra: ra0, zeus: zeus1, loki: loki2 }zipToObject(names, null)
// => { ra: null, zeus: null, loki: null }

20. 两个数组压缩成一个二维数组 zip 

import { zip } from 'radash'const names = ['ra', 'zeus', 'loki']
const cultures = ['egypt', 'greek', 'norse']zip(names, cultures)
// => [
//   [ra, egypt]
//   [zeus, greek]
//   [loki, norse]
// ]

21. 获取数组随机元素 draw 

import { draw } from 'radash'const fish = ['marlin', 'bass', 'trout']draw(fish) // => 随机值

22. 重新随机排列数组元素顺序返回 shuffle 

import { shuffle } from 'radash'const fish = [{name: 'Marlin',weight: 105,source: 'ocean'},{name: 'Salmon',weight: 22,source: 'river'},{name: 'Salmon',weight: 22,source: 'river'}
]shuffle(fish)

异步 API :

1. 将多个接口请求返回数据整合成一个数组 或 对象, 统一返回 all 

// 将数组作为参数传递将以相同的顺序将解析的 promise 值作为数组返回
import { all } from 'radash'const [user] = await all([api.users.create(...),s3.buckets.create(...),slack.customerSuccessChannel.sendMessage(...)
])// 将对象作为参数传递将返回一个对象,该对象具有与解析的 promise 值相同的键和值
import { all } from 'radash'const { user } = await all({user: api.users.create(...),bucket: s3.buckets.create(...),message: slack.customerSuccessChannel.sendMessage(...)
})

2. 不断重复请求, 可设置间隔时间, 直到请求成功或达到指定的最大重试次数 retry 

import { retry } from 'radash';  await retry({}, api.users.list)
await retry({ times: 10 }, api.users.list)await retry({ times: 2, delay: 1000 }, api.articles.list);// 在这个例子中,retry() 函数尝试执行 api.articles.list 异步操作,如果操作失败,它会等待 1000 毫秒(即 1 秒)后重试,最多重试 2 次。// 可以使用 retry() 函数来替代传统的异步重试库,因为它提供了更加简洁和灵活的接口。结合 Radash 的
// 其他功能,如 tryit、parallel 等,可以轻松构建出高效且健壮的异步处理逻辑,以应对后端服务的各种
// 不确定性。无论是处理网络请求、数据库操作还是其他异步任务,retry() 函数都能提供强大的容错能力,
// 确保应用程序的稳定性和可靠性

防抖 debounce  :

import { debounce } from 'radash'// 请求接口
const getUser = async () => {const { data } = await infUser()
}// 点击按钮
const handleTest = debounce({ delay: 2000 }, () => {// delay: 2000 间隔时间 毫秒 才请求getUser()
})

节流 throttle  :

import { throttle } from 'radash'// 请求接口
const getUser = async () => {const { data } = await infUser()
}const jieLiu = throttle({ interval: 2000 }, () => {// interval: 2000 间隔 2000 毫秒内只请求 1 次getUser ()
})

获取随机数字 random  :

import { random } from 'radash'random(0, 100) // => 0 到 100 之间随机数字

对象 API :

1. 合并两个对象 assign 

import { assign } from 'radash'const ra = {name: 'Ra',power: 100
}assign(ra, { name: 'Loki' })
// => { name: Loki, power: 100 }

2. 浅拷贝 clone 

import { clone } from 'radash'const ra = {name: 'Ra',power: 100
}const gods = [{name: 'Ra',power: 100}
]clone(ra) // => copy of ra
clone(gods) // => copy of gods

3. 对象 key 和 value 颠倒 invert 

import { invert } from 'radash'const powersByGod = {ra: 'sun',loki: 'tricks',zeus: 'lighning'
}invert(gods) // => { sun: ra, tricks: loki, lightning: zeus }

4. 获取对象所有 key 值 keys 

import { keys } from 'radash'const ra = {name: 'ra',power: 100,friend: {name: 'loki',power: 80},enemies: [{name: 'hathor',power: 12}]
}keys(ra)
// => [
//   'name',
//   'power',
//   'friend.name',
//   'friend.power',
//   'enemies.0.name',
//   'enemies.0.power'
// ]

5. 返回提取对象中指定元素, 组成新对象 pick 

import { pick } from 'radash'const fish = {name: 'Bass',weight: 8,source: 'lake',barckish: false
}pick(fish, ['name', 'source'])// 输出
{"name": "Bass","source": "lake"
}

6. 将对象所有 key 转为大写并返回 upperize 

import { upperize } from 'radash'const ra = {Mode: 'god',Power: 'sun'
}upperize(ra)// 输出
{"MODE": "god","POWER": "sun"
}

7. 将对象所有 key 转为小写并返回 lowerize 

import { lowerize } from 'radash'const ra = {Mode: 'god',Power: 'sun'
}// 输出
{"mode": "god","power": "sun"
}

字符串 API :

1. 将一串字符串以驼峰大小写格式返回 camel 

import { camel } from 'radash'camel('green fish blue fish') // => greenFishBlueFish

判断类型 API :

1. 是否数组 isArray

import { isArray } from 'radash'isArray('hello') // => false
isArray(['hello']) // => true

2. 是否日期 isDate 

import { isDate } from 'radash'isDate(new Date()) // => true
isDate(12)         // => false
isDate('hello')    // => false

3. 是否为空 isEmpty 

import { isEmpty } from 'radash'isEmpty([]) // => true
isEmpty('') // => true
isEmpty(null) // => true
isEmpty({}) // => true
isEmpty(0) // => true
isEmpty(NaN) // => true
isEmpty(undefined) // => trueisEmpty('hello')   // => false
isEmpty(['hello']) // => false

4. 是否相等 isEqual 

import { isEqual } from 'radash'isEqual(null, null) // => true
isEqual([], [])     // => trueisEqual('hello', 'world') // => false
isEqual(22, 'abc')        // => false

5. 是否浮点数 isFloat 

import { isFloat } from 'radash'isFloat(12.233)  // => true
isFloat(12)      // => false
isFloat('hello') // => false

6. 是否函数 isFunction 

import { isFunction } from 'radash'isFunction('hello') // => false
isFunction(['hello']) // => false
isFunction(() => 'hello') // => true

7. 是否数字 isNumber 

import { isNumber } from 'radash'isNumber('hello') // => false
isNumber(['hello']) // => false
isNumber(12) // => true

8. 是否对象 isObject 

import { isObject } from 'radash'isObject('hello') // => false
isObject(['hello']) // => false
isObject(null) // => false
isObject({ say: 'hello' }) // => true

9. 是否字符串 isString 

import { isString } from 'radash'isString('hello') // => true
isString(['hello']) // => false

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/794231.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

导入项目运行后,报错java: Cannot find JDK ‘XX‘ for module ‘XX‘

解决方案: 1、删除.idea和.iml文件 2、右击此module,点击 Open Module Settings 在 Module SDK 中选择所安装的java版本后,点击右下角 Apply 3、再运行试试吧,成功!

蓝桥杯(4):python动态规划DF[1]

动态规划相当于正着想?dfs主要适用于位置的变化? 子问题!状态,状态转移方程 1 一维DP 1.1 定义 重叠子问题!转换成子问题 ,与记忆化搜索很像 1.2 例子 1.2.1 上楼梯 子问题到最终的问题只能跨一步&…

用顺序表实现通讯录

前言 这次的通讯录是基于上一篇的动态顺序表的基础上实现的,如果对动态顺序表不熟悉,可以打开这个链接阅读http://t.csdnimg.cn/9zJ5g,这里我们会调用动态顺序表的函数。 如果想看静态顺序表实现通讯录,可以打开这个链接阅读http:…

Linux+HA高可用24X7的安全保证

一. 介绍作为服务器,需要提供一定的24X7的安全保证,这样可以防止关键节点的宕机引起系统的全面崩溃。利用OpenSource开源软件,完成系统的高可靠双机热备方案。基于linux的 HA软件可靠稳定,比使用商业版本的HA软件降低成…

CMakeLists.txt编写简单介绍:CMakeLists.txt同时编译.cpp和.cu

关于CMakeLists.txt的相关介绍,这里不赘诉,本人的出发点是借助于CMakeLists.txt掌握基本的C++构建项目流程,下面是本人根据网络资料以及个人实践掌握的资料。 CMakeList.txt构建C++项目 下图是一个使用CUDA实现hello world的项目,一般来说,一个标准的C++项目包括三个文件…

python标准数据类型--列表常用方法

在Python中,列表(List)是一种非常常用的数据类型,用于存储一组有序的元素。Python提供了许多内置方法来操作列表,使得对列表的处理变得非常灵活和便捷。在本篇博客中,我们将介绍一些常用的列表方法&#xf…

pycharm2023.1版本激活

经过如下三个步骤,成功激活,感谢网上的大神。 1、获取授权码 https://blog.csdn.net/weixin_44338495/article/details/136373612 2、报错:This license XXXXX has been suspended https://blog.csdn.net/qq_35542689/article/details/1368…

基本数据类型、包装类与字符串间的转换

(1)基本数据类型转为字符串 方式1:调用字符串重载的valueOf()方法 int a 10; //String str a;//错误的String str String.valueOf(a);方式2:更直接的方式 int a 10;String str a "";(2)…

COCO格式转YOLO格式训练

之前就转换过好几次,每次换设备训练,由于压缩包太大,u盘不够用。每次都要找教程从网上再下载一遍。因此这里记录一下,以免下次重新找教程。 在coco数据集中,coco2017train或coco2017val数据集中标注的目标(类别)位置在…

C++--对象作为返回值-----拷贝构造函数不执行的问题解决方案

1.问题现象 本来func函数返回p1,实际上p1会先拷贝一份传递给test函数里面的p,这个时候会执行拷贝构造函数,但是实际上的输出并没有; 而且执行拷贝构造函数的时候,因为生成p1的副本,所以我们打印的地址应该不相同&…

vue3源码解析——watch和watchEffect区别

watch和watchEffect是Vue 3.0中新增的两个响应式API,用于监听数据的变化。watch适用于需要获取新值和旧值,或者需要懒执行的场景,而watchEffect适用于需要监听多个数据源,并且需要立即执行的场景。它们之间的区别如下:…

CSS层叠样式表学习(文本属性)

(大家好,今天我们将继续来学习CSS文本属性的相关知识,大家可以在评论区进行互动答疑哦~加油!💕) 目录 四、CSS文本属性 4.1 文本颜色 4.2 对齐文本 4.3 装饰文本 4.4 文本缩进 4.5 行间距 4.6 文本…

苍穹外卖学习笔记(一)开发环境搭建

苍穹外卖技术框架 网关层: Nginx:反向代理负载均衡 nginx学习,看这一篇就够了:下载、安装。使用:正向代理、反向代理、负载均衡。常用命令和配置文件,很全-CSDN博客应用层: Spring Boot:简化spring程序的创…

计算机内存是如何管理的

计算内存的那些事儿——内存管理 大家回忆一下,计算机结构,或者说一个SoC(system-on-chip)芯片的结构。 cpu、memory、peripherals,这是计算机的主要部件,三者之间通过system bus勾搭在一起。 The main co…

趋势跟踪-笔记

在金融市场中,趋势,或者说动量效应,已被当成一种典型化事实。大量实证研究表明,趋势几乎存在于全球所有市场。 虽然参与者知道动量有效,却无法避免按照情绪化、非理性化的方式进行交易,从而使得动量效应能…

第五篇:3.4 用户归因和受众(User attribution and audience) - IAB/MRC及《增强现实广告效果测量指南1.0》

翻译计划 第一篇概述—IAB与MRC及《增强现实广告效果测量指南》之目录、适用范围及术语第二篇广告效果测量定义和其他矩阵之- 3.1 广告印象(AD Impression)第三篇广告效果测量定义和其他矩阵之- 3.2 可见性 (Viewability)第四篇广…

Vulnhub:BOSSPLAYERSCTF: 1

目录 信息收集 arp nmap nikto whatweb WEB web信息收集 dirmap 命令执行漏洞 反弹shell 提权 系统信息收集 get root 信息收集 arp ┌──(root㉿ru)-[~/kali/vulnhub] └─# arp-scan -l Interface: eth0, type: EN10MB, MAC: 00:50:56:2f:dd:9…

找不到api-ms-win-crt-runtime-l1-1-0.dll,无法继续执行代码的解决方法

当电脑系统中关键文件“api-ms-win-crt-runtime-l1-1-0.dll”发生丢失情况时,会导致某些应用程序无法正常运行。api-ms-win-crt-runtime-l1-1-0.dll是Windows操作系统中至关重要的动态链接库(DLL)文件,它包含了应用程序在运行过程…

terraform 遍历特殊对象

1 数组 在Terraform中,可以使用for循环来遍历数组。以下是一个简单的例子,该例子中定义了一个数组,并使用for循环来遍历数组中的每个元素。 # 定义一个数组 locals {my_array ["element1", "element2", "element…

【java探索之旅】逻辑控制掌握 顺序结构 分支语句

🎥 屿小夏 : 个人主页 🔥个人专栏 : Java编程秘籍 🌄 莫道桑榆晚,为霞尚满天! 文章目录 📑前言一、逻辑控制的概念二、顺序结构三、分支结构3.1 if语句3.2 if习题巩固3.3 细节注意项…