JavaScript如何根据键名映射修改数组对象且不修改原数组?
首先你给出的engToGerman存在语法错误,按照映射需求它应为对象而非数组,修正后的定义如下:
const engToGerman = { firstName: 'name', lastName: 'vorname' }
实现方案(完全不修改原始数据)
你可以使用数组map方法遍历原用户数组,每次遍历生成全新的对象,全程不会改动原数组和原数组内的对象:
const newUserDetails = userDetails.map(user => { const transformedUser = {} // 遍历映射规则,只保留需要的字段并重命名 for (const [englishKey, germanKey] of Object.entries(engToGerman)) { transformedUser[germanKey] = user[englishKey] } return transformedUser })
该方案的优势是扩展性强,后续如果需要新增翻译的字段,只需要更新engToGerman对象的映射规则即可,不需要修改遍历逻辑。
如果你的映射规则固定不会频繁修改,也可以用解构赋值写更简洁的版本:
const newUserDetails = userDetails.map(({ firstName, lastName }) => ({ name: firstName, vorname: lastName }))
内容的提问来源于stack exchange,提问作者ShadaMon
相关产品推荐
相关产品推荐

