parseStringFieldsToArray
将对象中指定字段的逗号分隔字符串转换为数组
引入版本
0.15.0
Demo
ts
import { parseStringFieldsToArray } from '@wyfex/iutils'
/**
* ================== 1. 标准逗号分隔字符串 ==================
*/
const case1 = { ids: '1,2, 3 ,', name: 'test' }
console.log(parseStringFieldsToArray(case1, ['ids']))
// { ids: ['1','2','3'], name: 'test' }
/**
* ================== 2. 纯空字符串字段 ==================
*/
const case2 = { codes: ' , , ' }
console.log(parseStringFieldsToArray(case2, ['codes']))
// { codes: [] }
/**
* ================== 3. 单个无逗号字符串 ==================
*/
const case3 = { tag: 'admin' }
console.log(parseStringFieldsToArray(case3, ['tag']))
// { tag: ['admin'] }
/**
* ================== 4. 值为数字、布尔、对象等非字符串 ==================
*/
const case4 = { num: 99, flag: true, info: { a: 1 } }
console.log(parseStringFieldsToArray(case4, ['num', 'flag', 'info']))
// { num: [99], flag: [true], info: [{ a: 1 }] }
/**
* ================== 5. 值为 null / undefined 转为空数组 ==================
*/
const case5 = { a: null, b: undefined }
console.log(parseStringFieldsToArray(case5, ['a', 'b']))
// { a: [], b: [] }
/**
* ================== 6. 多字段同时处理 ==================
*/
const case6 = {
ids: '10,20',
names: '张三 ,李四',
age: 18
}
console.log(parseStringFieldsToArray(case6, ['ids', 'names', 'age']))
// { ids: ['10','20'], names: ['张三','李四'], age: [18] }
/**
* ================== 7. 字段不存在,直接跳过无修改 ==================
*/
const case7 = { id: 1 }
console.log(parseStringFieldsToArray(case7, ['notExist']))
// { id: 1 }
/**
* ================== 8. fields 不传,默认空数组,对象原样输出 ==================
*/
const case8 = { ids: '1,2' }
console.log(parseStringFieldsToArray(case8))
// { ids: '1,2' }
/**
* ================== 9. 空对象 ==================
*/
console.log(parseStringFieldsToArray({}, ['a']))
// {}
/**
* ================== 10. 字段本身已是数组,不做二次处理 ==================
*/
const case10 = { list: [1, 2, 3] }
console.log(parseStringFieldsToArray(case10, ['list']))
// { list: [1, 2, 3] }
/**
* ================== 11. 嵌套对象(仅顶层生效,嵌套内部字段不处理) ==================
*/
const case11 = {
list: 'a,b',
inner: { list: 'x,y' }
}
console.log(parseStringFieldsToArray(case11, ['list']))
// { list: ['a','b'], inner: { list: 'x,y' } }
/**
* ================== 12. 非法入参场景 ==================
*/
console.log(parseStringFieldsToArray(null, ['ids']))
console.log(parseStringFieldsToArray(undefined, ['ids']))
console.log(parseStringFieldsToArray(123, ['ids']))
console.log(parseStringFieldsToArray('str', ['ids']))
console.log(parseStringFieldsToArray([], ['ids']))
// 全部直接返回入参本身