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

如何将对象数组转换为以元素value为键、label为值的普通对象

需求可行性结论

该需求完全可以实现。你之前使用Object.entries未达到预期,是因为方法选型错误:Object.entries的作用是将现有对象转换为[键, 值]结构的二维数组,和当前「从对象数组组装新对象」的处理方向完全相反。

具体实现方案

下面是3种可直接运行的实现写法,最终输出结果完全匹配你的预期:

  • 简洁写法(推荐,现代JS原生支持)
    搭配Array.map把原数组元素转换为[value值, label值]的键值对数组,再用Object.fromEntries直接转成目标对象:
const hello = [
  { label: 'one', value: 'Tangerinefeed' },
  { label: 'two', value: 'dryexamfeed' },
  { label: 'three', value: 'wetfeed' },
  { label: 'forth', value: 'sawdust' },
  { label: 'five', value: 'etc' },
];

const answer = Object.fromEntries(hello.map(item => [item.value, item.label]));
  • 兼容写法(适配不支持Object.fromEntries的老旧环境)
    用Array.reduce遍历数组,逐一向空对象中追加键值对:
const answer = hello.reduce((acc, cur) => {
  acc[cur.value] = cur.label;
  return acc;
}, {});
  • 基础写法(无API理解成本)
    直接声明空对象,通过循环逐个赋值:
const answer = {};
hello.forEach(item => {
  answer[item.value] = item.label;
});

注意:如果hello数组中存在多个元素的value字段值重复,后遍历到的元素的label值会覆盖前面同键的取值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 14:06:15