You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何仅运行一次reduce方法修改对象两个键名并保留其原有位置

单次reduce修改多个对象键名方案

你可以在单次reduce的键名映射逻辑中同时处理两个键的替换规则,无需两次遍历,同时能完全保留原有对象的键排序。

优化后代码如下:

const newArrayOfObj = rows.map(row => {
    return Object.keys(row).reduce((acc, key) => {
        // 按规则替换键名,无匹配则保留原键名
        const newKey = key === 'redirects' ? 'clicks' 
            : key === 'tags' ? 'external impressions' 
            : key;
        return {
            ...acc,
            [newKey]: row[key]
        };
    }, {});
});
return newArrayOfObj;

如果后续需要替换的键名更多,可以单独抽离映射表,扩展性更好:

// 提前定义键名映射规则,新增替换规则只需修改这个对象即可
const keyReplaceMap = {
    redirects: 'clicks',
    tags: 'external impressions'
};

const newArrayOfObj = rows.map(row => {
    return Object.keys(row).reduce((acc, key) => {
        return {
            ...acc,
            [keyReplaceMap[key] || key]: row[key]
        };
    }, {});
});
return newArrayOfObj;

注意:该方案依赖ES6+规范的对象键遍历顺序保证,主流现代浏览器、所有Node.js LTS版本均支持该特性,新对象的键顺序和原对象完全一致,不会出现排序错乱问题。

内容的提问来源于stack exchange,提问作者elad

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 17:27:03