如何将对象中数组内管道符连接的属性值拆分为逗号分隔的数组项
问题原因
你的代码存在3个核心问题:
- 没有提前判断值的类型,字符串类型的
uniqueId调用join()方法会直接抛出类型错误,中断代码执行 - 只给包含
|的属性赋值到新对象,不包含|的数组属性(比如shape)、非数组属性都没有被复制到新对象中 - 遍历对象键时使用了
map,你不需要生成新数组,单纯遍历用forEach更合理
修复代码
先判断属性值是否为数组,是数组的话再做拆分逻辑,非数组直接原样赋值,不管数组里有没有|都统一处理,避免漏字段:
const pipeToCommaObject = {}; Object.keys(objectValues).forEach(key => { const value = objectValues[key]; // 非数组类型直接原样赋值 if (!Array.isArray(value)) { pipeToCommaObject[key] = value; return; } // 数组类型先转成字符串再按|拆分 pipeToCommaObject[key] = value.join().split('|'); });
也可以用Object.fromEntries写得更简洁:
const pipeToCommaObject = Object.fromEntries( Object.entries(objectValues).map(([key, value]) => { if (!Array.isArray(value)) return [key, value]; return [key, value.join().split('|')]; }) );
内容的提问来源于stack exchange,提问作者Jim41Mavs
相关产品推荐
相关产品推荐

