findBy
根据指定键值在数组中查找元素(支持嵌套数组)
⚠️ 破坏性变更:从 v0.20.0 起,findByKey(v0.15.0) 更名为 findBy,原函数已废弃
引入版本
0.20.0
Demo
ts
import { findBy } from '@wyfex/iutils'
const data = [
{ id: 1, label: '姓名' },
{ id: 2, label: '手机号', children: [{ id: 21, label: '验证码' }] },
{ id: 3, label: '密码' }
]
/**
* ================== 单个值 - 平级查找 ==================
*/
console.log(
'单个值 - 平级查找=>',
findBy(data, { key: 'label', value: '姓名' })
)
// {id: 1, label: '姓名'}
/**
* ================== 单个值 - 嵌套查找 ==================
*/
console.log(
'单个值 - 嵌套查找=>',
findBy(data, { key: 'label', value: '验证码' })
)
// {id: 21, label: '验证码'}
/**
* ================== 单个值 - 值类型不一致 ==================
*/
console.log('单个值 - 值类型不一致=>', findBy(data, { key: 'id', value: '1' }))
// {id: 1, label: '姓名'}
/**
* ================== 数组值 - 批量查找 平级 + 嵌套 ==================
*/
console.log(
'数组值 - 批量查找 平级 + 嵌套=>',
JSON.stringify(
findBy(data, { key: 'label', value: ['姓名', '验证码', '密码'] }),
null,
2
)
)
// [
// { id: 1, label: '姓名' },
// { id: 21, label: '验证码' },
// { id: 3, label: '密码' }
// ]
/**
* ================== 不存在的值 ==================
*/
console.log('不存在的值=>', findBy(data, { key: 'label', value: '不存在' }))
// undefined
/**
* ================== 自定义嵌套key ==================
*/
const customData = [
{ id: 1, label: '父节点', child: [{ id: 11, label: '子节点' }] }
]
console.log(
'自定义嵌套key=>',
findBy(customData, { key: 'label', value: '子节点', childrenKey: 'child' })
)
// {id: 11, label: '子节点'}