JavaScript如何替换对象属性名?实现属性名与数组映射替换
嗨,作为编程新手能尝试动手写代码已经超棒啦!我来帮你完成这个属性名替换的函数,完美实现你想要的效果~
问题分析
你需要把旧对象里的每个属性名,对应替换成新名称数组里同位置的名字,同时保留原来的属性值。比如旧对象里第一个属性Daniel对应新数组第一个元素Felix,值18也跟着保留下来。
完整实现代码
这里给你两种写法,适配不同的JS环境,你可以根据自己的情况选择:
现代ES6+版本(推荐)
function swapNames(oldObj, newNames) { const newObj = {}; // 获取旧对象的所有属性名,按顺序组成数组 const oldKeys = Object.keys(oldObj); // 遍历每个属性名,对应替换成新名称 oldKeys.forEach((key, index) => { newObj[newNames[index]] = oldObj[key]; }); return newObj; } // 测试用例 const originalObj = {Daniel:18,Tyler:21,Michelle:22,Austin:20}; const newNamesArr = ["Felix", "Carlos", "Sasha", "John"]; const result = swapNames(originalObj, newNamesArr); console.log(result); // 输出:{Felix:18,Carlos:21,Sasha:22,John:20}
ES5兼容版本(适合旧环境)
function swapNames(oldObj, newNames) { var newObj = {}; var oldKeys = Object.keys(oldObj); for(var i = 0; i < oldKeys.length; i++) { var oldKey = oldKeys[i]; newObj[newNames[i]] = oldObj[oldKey]; } return newObj; }
代码解释
- 第一步创建空对象
newObj,用来存放最终的结果。 Object.keys(oldObj)会把旧对象的所有属性名提取成一个数组,顺序和对象里的属性顺序一致(现代JS中对象的键会保留插入顺序)。- 遍历旧属性名数组时,用索引
index对应新名称数组的位置,把旧对象的属性值赋值给新对象的新属性名。 - 最后返回新对象就完成替换啦!
注意事项
要确保newNames数组的长度和旧对象的属性数量一致哦,不然会出现属性遗漏(数组更短)或者多余的undefined值(数组更长)的情况。
内容的提问来源于stack exchange,提问作者user7400006
相关产品推荐
相关产品推荐

