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

如何优化使用forEach的对象转换代码以避免临时变量?

优化方案推荐

当然有更简洁的优化方式啦!这里给你推荐几种不用显式声明临时变量的写法,代码更紧凑也更符合现代JavaScript的风格:

1. 使用 Object.fromEntries() + 解构赋值

这个方法是处理键值对转换的绝佳选择,逻辑清晰且代码简洁:

const data = { 
  "title": { "color": "red", "value": "Hello World" }, 
  "category": { "color": "blue", "value": "News" } 
};

const transformedData = Object.fromEntries(
  Object.entries(data).map(([key, { value }]) => [key, value])
);

console.log(transformedData); // 输出: {title: "Hello World", category: "News"}

这里通过Object.entries(data)把原对象转换成[键名, 子对象]的数组,再用map遍历数组,通过解构直接取出子对象里的value,最后用Object.fromEntries()把处理后的键值对数组转回对象。

2. 使用 Array.prototype.reduce()

reduce方法可以在遍历过程中直接累积结果,无需额外声明临时变量:

const data = { 
  "title": { "color": "red", "value": "Hello World" }, 
  "category": { "color": "blue", "value": "News" } 
};

const transformedData = Object.keys(data).reduce((acc, key) => {
  acc[key] = data[key].value;
  return acc;
}, {});

console.log(transformedData); // 输出: {title: "Hello World", category: "News"}

这里reduce的初始值是一个空对象{},每次迭代时把当前键对应的value赋值给累加器acc,最后返回累加器即可得到目标对象。

这两种方法都避免了显式声明临时变量temp,代码更简洁易读,其中Object.fromEntries()的写法更直观,非常适合这种扁平化对象的场景哦!

内容的提问来源于stack exchange,提问作者Thian Kian Phin

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 03:36:03