JS如何将字段数组转换为对象属性链式访问格式
JavaScript 路径数组转方括号属性访问串实现
问题说明
给定存储对象访问路径的数组:
let fieldsArray = ['clientMap', 0, 'legalEntityNumber']
目标输出为方括号包裹的链式访问格式:
['clientMap'][0]['legalEntityNumber']
直接调用fieldsArray.join('[]')无法得到正确结果。
原因说明
Array.join()传入的参数只会作为数组元素之间的连接符,不会包裹单个元素,因此fieldsArray.join('[]')的输出为clientMap[]0[]legalEntityNumber,不符合格式要求。
正确实现
先通过map()遍历数组,给每个路径段包裹对应格式的方括号,再拼接为完整字符串:
const fieldsArray = ['clientMap', 0, 'legalEntityNumber'] const accessPath = fieldsArray.map(segment => { // 数字索引直接包裹方括号,字符串属性名加单引号后包裹方括号,匹配示例格式 return typeof segment === 'number' ? `[${segment}]` : `['${segment}']` }).join('') // 验证输出 console.log(accessPath) // 打印结果:['clientMap'][0]['legalEntityNumber']
如果不需要严格区分数字索引和字符串键,可使用简化写法,统一给所有路径段加单引号,该写法在JS中对数组、对象访问都生效:
const accessPath = fieldsArray.map(segment => `['${segment}']`).join('') // 输出结果:['clientMap']['0']['legalEntityNumber']
内容的提问来源于stack exchange,提问作者Dinesh Kumar
相关产品推荐
相关产品推荐

