devUseExtractSelected 提取对象数组中指定字段,返回计算属性
devUseExtractSelected 是一个基于 Vue 3 的 computed 封装函数,用于从对象数组中提取指定字段的值,并以计算属性的形式返回,支持以下两种模式:
- 单层字段提取(如 'id')
- 多层嵌套路径提取(如 ['meta', 'name'])
同时,支持单选与多选两种模式:
- multiple = false:直接提取每项的目标字段值组成数组
- multiple = true:提取每项中字段值(数组类型),将其扁平化合并
这个方法适合在选中项、值绑定、表单构建等场景中,提取嵌套字段数据作为动态响应式计算结果。
使用示例
ts
import {devUseExtractSelected} from "devecoui-plus"
const list1 = [
{ id: 1, name: '张三' },
{ id: 2, name: '李四' }
];
// 提取 name 字段
const names = devUseExtractSelected(list1, 'name');
console.log(names.value); // 👉 ['张三', '李四']
const list2 = [
{ id: 1, meta: { tag: 'A' } },
{ id: 2, meta: { tag: 'B' } },
];
// 提取 meta.tag 字段
const tags = devUseExtractSelected(list2, ['meta', 'tag']);
console.log(tags.value); // 👉 ['A', 'B']
const list3 = [
{ id: 1, roles: ['admin', 'editor'] },
{ id: 2, roles: ['viewer'] }
];
// 提取 roles 字段并合并所有数组项
const allRoles1 = devUseExtractSelected(list3, 'roles');
console.log(allRoles1.value); // 👉 [['admin', 'editor'],['viewer']]
// 提取 roles 字段并合并所有数组项
const allRoles2 = devUseExtractSelected(list3, 'roles', true);
console.log(allRoles2.value); // 👉 ['admin', 'editor', 'viewer']