gpt4 book ai didi

php - 需要将带有方括号的字段名称转换为javascript对象

转载 作者:搜寻专家 更新时间:2023-10-31 21:36:28 26 4
gpt4 key购买 nike

我想将由方括号组成的字段名称转换为 JavaScript 中的对象。我已经看到 PHP 确实将它们转换成一个数组,但是尽管搜索了好几天,但还没有看到用 JavaScript 完成的。

数据:

<input name="address[permanent][name]" type="text" value="My Address">
<input name="address[permanent][street][street_one]" type="text" value="My Street One">
<input name="address[permanent][street][street_two]" type="text" value="My Street Two">

结果(我想要实现的):

form = { address: { permanent: { name: "My Address", street: { street_one: "My Street One", street_two: "My Street Two" } } } }

最佳答案

未经测试,但您的基本算法可能是这样的:

以下对我有用:

var form = {};
$(':input', yourFormElement).each(function(){
var top = form;
var path = $(this).attr('name');
var val = $(this).val();
var prev = '';
while ((path.replace(/^(\[?\w+\]?)(.*)$/, function(_m, _part, _rest) {
prev = path;
_part = _part.replace(/[^A-Za-z_]/g, '');
if (!top.hasOwnProperty(_part)) {
if (/\w+/.test(_rest)) {
top[_part] = {};
top = top[_part];
} else {
top[_part] = val;
}
} else if (!/\w+/.test(_rest)) {
top[_part] = val;
} else {
top = top[_part];
}
path = _rest;
})) && (prev !== path));
});

用 jQuery 表达式替换 yourFormElement 以获得所需的表单元素。

迭代每个 :input 元素(表单输入),然后对于每个循环尝试使用正则表达式分解名称的“路径”,同时创建和/或遍历正在构建的 form 数据结构。最后将输入的值赋给遍历到的叶子节点。

它的工作示例:http://jsfiddle.net/8fpLx/10/

while 循环中的那一系列条件可以大大简化,但它确实有效。

关于php - 需要将带有方括号的字段名称转换为javascript对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18267230/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com