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

如何将两个指定对象转换为无嵌套的单一键值对对象?

解决方法:将对象转换为以id为键的扁平化对象

嘿,我来帮你搞定这个问题!你想要把两个对象的id作为新对象的键,value作为对应的值,对吧?先说说你之前尝试的方法为什么不对:你用Object.keys(a).forEach(...)遍历的是a的键(也就是id和value),然后把b对应键的值赋值给a,这其实是在修改原对象a,完全没用到id作为新键的逻辑,当然得不到想要的结果啦~

下面给你几种简单有效的实现方式:

1. 手动构建(适合少量对象的情况)

如果只有a和b两个对象,直接用ES6的计算属性名就能快速创建目标对象:

const a = {id: "1", value: "hello"};
const b = {id: "2", value: "bye"};

const c = {
  [a.id]: a.value,
  [b.id]: b.value
};
// 输出:{ '1': 'hello', '2': 'bye' }

这里的[a.id]会把a.id的值(也就是"1")作为对象的键,JS里对象的键本质是字符串,但显示的时候会自动处理成类似数字的形式,和你想要的c结构一致。

2. 使用Object.fromEntries()(适合批量对象的情况)

如果以后你有更多这类对象,把它们放到数组里,用Object.fromEntries()会更高效:

const a = {id: "1", value: "hello"};
const b = {id: "2", value: "bye"};
const objects = [a, b];

const c = Object.fromEntries(objects.map(item => [item.id, item.value]));
// 输出:{ '1': 'hello', '2': 'bye' }
  • 第一步用map把每个对象转换成[键, 值]的数组(比如["1", "hello"])
  • 然后Object.fromEntries()把这个二维数组直接转换成目标对象

3. 使用reduce方法(另一种批量处理方式)

如果你更习惯数组的reduce操作,也可以这么写:

const a = {id: "1", value: "hello"};
const b = {id: "2", value: "bye"};
const objects = [a, b];

const c = objects.reduce((result, item) => {
  result[item.id] = item.value;
  return result;
}, {});
// 输出:{ '1': 'hello', '2': 'bye' }

这里的reduce从空对象{}开始,每次迭代把当前对象的id和value添加到结果对象里,最后返回完整的目标对象。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 06:51:15