确保从列表中获取可用值
对于很多项目来说,某些配置项或查询条件是必需的。当用户丢失配置数据或项目下线配置项,都会导致项目发生错误而造成不可用的问题,这时候,开发需要提供一些兜底策略,如当前列表数据查询不到时默认使用第一项。
ensure-get-list-val
这些东西每次都写一下又很麻烦,所以这里进行了一次封装,代码如下:
interface EnsureGetValFromListParams {
/** 列表数据 **/
items: ItemType[]
value?: ValueType | undefined
/** 列表中数据值的提取方法 **/
getVal?: (item: ItemType) => ValueType
/** 查询不到数据时候返回值的位置 **/
pos?: 'frist' | 'last'
}// ValueType = ItemType
// 如果不提供 ValueType, 则 ValueType 默认为 ItemType
const ensureGetValFromList = ({
items,
value,
getVal = item => item as unknown as ValueType,
pos = 'frist'
}: EnsureGetValFromListParams): ValueType | null => {
// 当前不是数组直接返回 null
if (!Array.isArray(items)) {
return null
}const count = items.length
// 当前为空数组直接返回 null
if (count === 0) {
return null;
}// 没有传递数值或者当前列表长度为1,直接返回列表唯一数据
if (!value || count === 1) {
return getVal(items[0])
}// 查询列表,是否有数值等于传入数值
if (items.some(item => getVal(item) === value)) {
return value
}// 返回列表第一条还是最后一条数据
const index = pos === 'frist' ? 0 : count - 1
return getVal(items[index])
}
代码在 ensure-get-list-val 中。也可以使用 npm 等工具进行安装和使用。
鼓励一下 如果你觉得这篇文章不错,希望可以给与我一些鼓励,在我的 github 博客下帮忙 star 一下。
【确保从列表中获取可用值】博客地址
推荐阅读
- Docker|20.docker cp从容器里面拷文件到宿主机或从宿主机拷文件到docker容器里面
- 时间序列聚类|Adaptive Temporal-Frequency Network for Time-Series Forecasting(TKDE)
- 麒麟操作系统 (kylinos) 从入门到精通 - 系统设置 - 第十九篇 v10sp1,从2107在线升级至2203的版本
- 实战回忆录(从Webshell开始突破边界)
- MySQL IN 和 NOT IN () 空列表报错
- 找不到任何设备驱动程序.请确保安装介质_win10安装完全手册,详细全面,新手必备...
- 找不到任何设备驱动程序.请确保安装介质_Windows|找不到任何设备驱动程序.请确保安装介质_Windows 10 1909全新安装终极指南
- 数据结构与算法|数据结构与算法——栈、队列、堆汇总整理
- 笔记|数据结构实验报告3————栈和队列及其应用
- 数据结构与算法|数据结构笔记——栈和队列