根据相同的属性名称创建对象数组

Jak*_*ynn 8 javascript jquery json

我有基于XML文件生成的表单输入.

我们通过data-*以后可用于构建对象的属性在XML文件中保留嵌套元素的引用.例如:

<parent>
 <child>
  <grandchild1>first</grandchild1>
  <grandchild2>second</grandchild2>
 </child>
</parent>
Run Code Online (Sandbox Code Playgroud)

<input type="text" data-nest="parent.child.grandchild1" value="first"/> <input type="text" data-nest="parent.child.grandchild2" value="second"/>

当我们提交表单时,我会根据其data-nest属性创建一个对象(具有嵌套对象).以上将成为

parent:{
 child:{
  grandchild1: first,
  grandchild2: second
  }
}
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是在XML文件中找到多个相同的标记,例如

<child>
 <grandchild>first</grandchild>
 <grandchildFriend>firstFriend</grandchildFriend>
</child>
<child>
 <grandchild>second</grandchild>
 <grandchildFriend>secondFriend</grandchildFriend>
</child>
Run Code Online (Sandbox Code Playgroud)

当我创建我的对象时,我希望如果找到多次出现相同的data-nest值,它们会嵌套在数组中以保持不同的值.

使用当前设置,第二次出现的标签将可以理解地覆盖第一个.

这是我想要的最终对象结构:

parent:{
 child:[
  {
   grandchild: first,
   grandchildFriend: firstFriend
  }, 
  {
   grandchild: second,
   grandchildFriend: secondFriend
  }
  ]
 }
Run Code Online (Sandbox Code Playgroud)

TL; DR

如果对象具有相同的data-*属性,我想将对象更改为嵌套对象数组

这是当前代码如何帮助提供更好理解的小提琴.

Jak*_*ynn 0

通过使用不同的方法进行攻击已经解决了这个问题。

我们将所需的元素设置为[]添加到其属性末尾的数组data-nest- 然后我们可以使用它作为我们想要转换的内容的基线。

如果有人好奇,这是更新的小提琴