如何优化对象解构后翻译数据的分组重组实现?
优化翻译数据结构的几种方案
针对你已经解构出translations对象后,要将其转换为按类型分组的语言键值对的需求,除了forEach循环外,还有几种更简洁或扩展性更好的实现方式:
方案1:直接解构+组装(最直观,无循环)
如果已知所有需要处理的键名,直接通过对象解构提取属性,再组装成目标结构,性能和可读性都不错:
const { snippetItem_en: itemEn, snippetItem_fr: itemFr, snippetCar_en: carEn, snippetCar_fr: carFr } = translations; const itemTranslations = { en: itemEn, fr: itemFr }; const carTranslations = { en: carEn, fr: carFr };
方案2:使用Object.fromEntries(简洁灵活)
利用Object.fromEntries将语言数组映射成键值对数组,再转换为对象,代码更紧凑:
const langs = ['en', 'fr']; const itemTranslations = Object.fromEntries( langs.map(lang => [lang, translations[`snippetItem_${lang}`]]) ); const carTranslations = Object.fromEntries( langs.map(lang => [lang, translations[`snippetCar_${lang}`]]) );
方案3:通用处理函数(扩展性强)
如果后续可能增加更多翻译类型(比如snippetBook_en这类),可以封装一个通用函数来避免重复代码:
const langs = ['en', 'fr']; const getTranslations = (prefix) => Object.fromEntries(langs.map(lang => [lang, translations[`${prefix}_${lang}`]])); const itemTranslations = getTranslations('snippetItem'); const carTranslations = getTranslations('snippetCar');
这些方案各有适用场景:方案1适合固定键名的小场景,代码直白;方案2和3更适合需要扩展语言或翻译类型的情况,维护成本更低。
内容的提问来源于stack exchange,提问作者jsobjectkeys2
相关产品推荐
相关产品推荐

