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

JavaScript中字符串数组转键值对对象数组的实现问题

将字符串数组转换为[{title: value, value: value}]格式的对象数组

给定如下字符串数组:

const locationQuery = [
  "Antwerpen",
  "Hemiksem",
  "Antwerpenlei, Brasschaat",
  "Antwerpenplein, Gent",
  "Antwerpenstraat, Bredene",
  "Antwerpenstraat, Oostende",
  "'s-Herenstraat, Antwerpen",
  "'t Berkenveld, Antwerpen",
  "'t Doolhofje, Antwerpen",
  "'t Duivelshoekje, Antwerpen"
];

需要将其转换为每个元素都包含title和value属性(属性值为原数组对应字符串)的对象数组。

错误原因分析

你之前使用reduce只得到最后一个元素,是因为初始值设为了空对象{},每次迭代都会生成一个新对象覆盖之前的title和value,最终只会保留最后一次迭代的结果。

正确解法

方法1:使用map(推荐)

map是数组转换场景下最直观的方法,它会遍历数组并返回一个新数组,每个元素对应原数组元素的转换结果:

const transformedArray = locationQuery.map(item => ({
  title: item,
  value: item
}));

方法2:使用reduce(如果非要用的话)

需要将初始值设为空数组[],每次迭代向数组中添加新对象:

const transformedArray = locationQuery.reduce((acc, item) => {
  acc.push({ title: item, value: item });
  return acc;
}, []);

两种方法最终都会生成你期望的格式:

[
  {title: "Antwerpen", value: "Antwerpen"},
  {title: "Hemiksem", value: "Hemiksem"},
  {title: "Antwerpenlei, Brasschaat", value: "Antwerpenlei, Brasschaat"},
  // ... 剩余元素
]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 20:32:50