JavaScript如何拆分字符串数组并返回单个键值对格式对象
实现字符串数组转翻译键值对对象的方案
问题原因
你的实现存在两个核心问题:
map()方法会返回新数组,无法直接得到对象类型的结果- 写
{key: value}时,JS会把key作为固定字面量键名,不会读取你解构得到的key变量的值,要使用变量作为键需要用计算属性语法{ [key]: value }
实现方案
方案1:使用Array.reduce(兼容性最好,全JS版本支持)
const translations = [ 'Back to Main Window: Retour à la fenêtre principale', 'All Client Groups: Tous les groupes de clients', 'Filter by Client: Filtrer par client' ] const result = translations.reduce((acc, current) => { // 仅拆分第一个冒号,避免value本身包含冒号时解析错误 const [key, ...valueFragments] = current.split(':') // 去除首尾多余空格后写入对象 acc[key.trim()] = valueFragments.join(':').trim() return acc }, {})
方案2:使用Object.fromEntries(ES2019+支持,写法更简洁)
const result = Object.fromEntries( translations.map(item => { const [key, ...valueFragments] = item.split(':') return [key.trim(), valueFragments.join(':').trim()] }) )
两种方案最终输出的result都和你期望的格式完全一致。
内容的提问来源于stack exchange,提问作者Manuel Abascal
相关产品推荐
相关产品推荐

