【发布时间】:2016-05-27 18:28:43
【问题描述】:
我有一个表单,其中的控件具有代表层次结构的名称。
示例
<form>
<input name="[field1][0][field11]" value="foobar1" />
<input name="[field1][0][field12][0][field121]" value="foobar2" />
<input name="[field2]" value="foobar3" />
<input name="[field3][0][field31]" value="foobar4" />
<input name="[field3][1][field32][0][field321]" value="foobar5" />
</form>
我想获取一个表示层次结构的Object,像这样:
{
"field1": [
{
"field11": "foobar1",
"fiedl12": [
{
"field121": "foobar2"
}
]
}
],
"field2": "foobar3",
"field3": [
{
"field31": "foobar4"
},
{
"field32": [
{
"field321": "foobar5"
}
]
}
]
}
如何获得?是否有任何原生 JS 或 jQuery 函数来实现这一点? (.serializeArray() 在这里没有帮助)
只是名称结构是标准的,实际名称不会有field-12或field-321这样的索引/em>(唯一的索引位于模式“[field][index]”的第二个方括号中。
[field] 对应于普通字符串值(当不存在 [index] 时)或数组(当 [index] em> 在那里)。
[index] 始终对应于具有以下[]-brackets 集中定义的属性的新对象 ({})。
PS - 请不要使用 jQuery 插件
【问题讨论】:
-
丑陋的乳清做某事
-
[field3][0]和[field3][1]有什么区别?为什么 [field1][0] 不一样?
-
[field3][0] 是一个新的 {} 对象(具有 field31 属性),位于数组 [field3 ]。 [field3][1] 是同一数组中的另一个 {} 对象(具有 field32 属性)。 [field1][0] 是 [field1] 数组中的第三个对象(这是与数组 [field3] 不同的属性)。
标签: javascript jquery arrays object serialization