【发布时间】:2022-01-12 19:59:56
【问题描述】:
我有如下代码
function renameKey ( obj, oldKey, newKey ) {
obj[newKey] = obj[oldKey];
delete obj[oldKey];
}
const arr = JSON.parse(json);
arr.forEach( obj => renameKey( obj, '_id', 'id' ) );
const updatedJson = JSON.stringify( arr );
但似乎箭头函数 (=>) 在我的环境中不起作用并出现错误。
箭头函数语法 (=>)' 仅在 ES6 中可用(使用 'esversion: 6')
这是 Apigee 环境,我无权更改任何配置。当我删除箭头函数并像下面这样作为普通函数调用时,它失败了
const arr = JSON.parse(json);
arr.forEach(renameKey( obj, '_id', 'id' ) );
const updatedJson = JSON.stringify( arr );
所以,为了更改 JSON 中的每个键,我该如何使用 forEach 循环,或者如果有替代方法会很有帮助。谁能给点建议。
【问题讨论】:
-
改用传统函数。
-
arr.forEach(function (obj) { renameKey(obj, '_id', 'id') }); -
谢谢尼古拉斯。你的代码就像一个魅力。
-
@NicholasTower,此代码有效,但出现了一个令人惊讶的问题。它正在修改消息的顺序。假设如果我们在数组中有三个 JSON 元素,重命名对象后,第一个元素变为最后一个元素,其他元素也发生位置变化。有什么办法可以避免吗?
标签: javascript arrays json arrow-functions