如何在JavaScript中替换对象键名?API响应键名修改求助
问题解决:修改API响应对象的键名
你的代码问题分析
你当前的代码存在几个核心错误,导致返回空数组:
- 遍历对象的方式错误:
for (let dict in dicts)遍历的是对象的键名(比如"sales"、"city"这些字符串),不是整个对象。所以const dictionary = dict得到的是字符串,而非你要操作的原对象。 - Object.assign用法完全错误:你写的
Object.assign(dictionary, { name: dictionary.oldKey })['city']里,oldKey是不存在的变量,而且['city']的写法毫无意义,根本达不到映射键名的目的。 - 操作对象错误:你试图修改字符串类型的
dictionary,字符串是不可变类型,后续的delete操作也完全无效,最后push到数组里的都是无效内容。
正确解决方案
根据你的需求,分两种常见场景给出代码:
场景1:API返回的是单个对象(即你的示例data是单个JSON对象)
直接创建新对象,映射原键到目标键即可:
// 转换单个对象 const transformedData = { value: data.sales, name: data.city }; return transformedData;
场景2:API返回的是对象数组(比如你误以为data是数组,所以用了循环)
用map方法遍历数组,逐个转换对象:
// 转换对象数组 const transformedArray = data.map(item => ({ value: item.sales, name: item.city })); return transformedArray;
额外说明
如果你一定要修改原对象(不推荐,因为可能影响其他使用原对象的逻辑),可以这样写:
// 修改原对象(不推荐) data.value = data.sales; data.name = data.city; delete data.sales; delete data.city; return data;
内容的提问来源于stack exchange,提问作者erdo
相关产品推荐
相关产品推荐

