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

如何将HTML input元素的值收集为键值对形式的对象?

更高效简洁的Input值提取方案

给定的HTML input元素如下:

<input name="fruit" id="fruit" value="Orange">
<input name="vegetable" id="vegetable" value="Spinach">
<input name="dairy" id="dairy" value="Eggs">
<input name="bread" id="bread" value="Bread">
<input name="soup" id="soup" value="Soup">

需要提取这些元素的值,生成如下键值对对象:

{
  "fruit": "Orange", 
  "vegetable": "Spinach", 
  "dairy": "Eggs", 
  "bread": "Bread", 
  "soup": "Soup"
}

你当前的实现通过拼接JSON字符串再解析的方式,不仅冗余还存在潜在bug,下面提供两种更高效简洁的写法:

方案1:Array.from + reduce(兼容性友好)

const inputs = document.getElementsByTagName('input');
const result = Array.from(inputs).reduce((obj, input) => {
  obj[input.id] = input.value;
  return obj;
}, {});
console.log(result);

优势:把getElementsByTagName返回的HTMLCollection转为数组后,用reduce逐步构建目标对象,逻辑直观,兼容绝大多数现代浏览器,没有额外的解析开销。

方案2:Object.fromEntries + map(代码最紧凑)

const inputs = document.getElementsByTagName('input');
const result = Object.fromEntries(
  Array.from(inputs).map(input => [input.id, input.value])
);
console.log(result);

优势:Object.fromEntries可以直接将键值对数组转换为对象,搭配map快速生成键值对数组,代码简洁到几乎一行搞定,适合支持ES2019及以上的环境。

原代码的核心问题

  • 性能冗余:没必要绕弯子拼接字符串再做JSON解析,直接操作对象的效率高得多
  • 稳定性风险:如果input的value里包含双引号、反斜杠这类特殊字符,会直接破坏JSON格式,导致JSON.parse抛出错误

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 21:13:10