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

JavaScript:值为数组的对象转键值对数组时,如何用原键名替代数组索引

现有代码的问题
  • 你对每个键对应的数组做了展开运算,JS 展开数组生成新对象时,只会把数组的可枚举数字索引作为对象的属性键(数组的length属性是不可枚举的,所以不会出现在生成的对象里),因此最终才会生成{0: "22"}这类带索引键的结构
  • 整个构造新对象的过程里,完全没有把循环拿到的原键名(比如Cost One、Cost Two)用到新对象的属性上,等于把最该保留的字段名给丢掉了
修改方法

不需要对原数组做展开,只要在每一轮循环中,把当前遍历到的原键名作为新对象的属性键,值直接取数组的第一个元素即可。

修改后的循环代码:

const mappedDataArray = [];
for (const key in costsFormValues) {
  const mappedData = {
    [key]: costsFormValues[key][0]
  };
  mappedDataArray.push(mappedData);
}

如果不想手动维护空数组和push逻辑,也可以用Object.entries结合数组map方法实现更简洁的版本,效果完全一致:

const mappedDataArray = Object.entries(costsFormValues).map(([key, arr]) => ({
  [key]: arr[0]
}));

运行以上代码,就能直接得到预期的输出结构:

[{Cost One: "22"}, {Cost Two: "33"}, {Cost Five: "1456"}]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.30 05:36:09