如何在对象内部获取自身键名以避免代码重复?
解决方案
当然可以避免重复输入键名,直接在对象字面量内部没办法直接获取当前键名,但可以通过以下两种常用方式实现:
1. 使用Array.reduce批量生成对象
先定义所有需要的键名数组,再通过reduce遍历生成最终对象,这样键名只需要写一次:
const keys = ['dliaz', 'srojourner']; const profileContentSrc = keys.reduce((acc, key) => { acc[key] = { img: `${img_root[0]}${key}${img_root[1]}`, p: key === 'dliaz' ? 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin nec felis consectetur, semper urna nec, eleifend sapien.' : 'Morbi hendrerit dignissim lorem, id scelerisque elit. Aliquam iaculis varius lacinia. In dignissim placerat urna ac hendrerit.' }; return acc; }, {});
2. 用工厂函数封装子对象逻辑
创建一个生成子对象的函数,传入键名和文本内容,函数内部自动拼接img路径:
function createProfile(key, text) { return { img: `${img_root[0]}${key}${img_root[1]}`, p: text }; } const profileContentSrc = { 'dliaz': createProfile('dliaz', 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin nec felis consectetur, semper urna nec, eleifend sapien.'), 'srojourner': createProfile('srojourner', 'Morbi hendrerit dignissim lorem, id scelerisque elit. Aliquam iaculis varius lacinia. In dignissim placerat urna ac hendrerit.') };
这两种方式都能让你只写一次键名,避免重复冗余。
内容的提问来源于stack exchange,提问作者user19147153
相关产品推荐
相关产品推荐

