如何声明两个名称相同但属性不同的对象



我正在研究node.js中的函数,该函数创建JS对象,然后将其转换为XML。xml 格式模板要求具有两个名称相同但值不同的属性,例如:

<?xml version="1.0" encoding="utf-8"?>
<XMLExample>
<Person id="123ok" type="student">
<searchable>true</searchable>
<valid>true</valid> 
</Person>
<Person name="Aiana" type="student" parentPersonId="123ok">
<lastName>Ali</lastName>
<grade>9</grade>
<gradYear>2020</gradYear>
</Person>
</XMLExample>

问题是如何在另一个对象中设置两个同名的"Person"JS对象?

var futureXMLObject = {
"Person": {
"@id": "123ok",
"@type": "student"
...
}
}
"Person": {
"@name": "Aiana",
"@type": "student",
"@parentPersonId": "123ok"
...
}
}

这是不可能的。您将如何访问对象中的对象?futureXMLObject['Person']不起作用,因为它无法返回两个对象。

您是否考虑过使用数组?

var futureXMLObj = {
"Persons": [
{
"@id": "123ok",
"@type": "student"
},
{
"@name": "Aiana",
"@type": "student",
"@parentPersonId": "123ok"
}
]
};

你不能这样做,但你可以使用Array的对象

var futureXMLObject = {
"Person": [
{
"@id": "123ok",
"@type": "student"
},
{
"@name": "Aiana",
"@type": "student",
}
]
}
for (var person of futureXMLObject['Person']) {
console.log(person);
}

这听起来像是一个对象数组,而不仅仅是一个对象

最新更新