我有JSON数组,看起来像
var data = {
"fields": [{
"firstName": {
"fieldName": "First Name",
"required": true,
"provided": false
}
},
{
"lastName": {
"fieldName": "Last Name",
"required": true,
"provided": false
}
},
{
"email": {
"fieldName": "Email",
"required": true,
"provided": false
}
}
]
}
再往下我试图这样做:
fieldName
。不使用索引就可以做到吗? data.fields
给了我一个对象数组。从那时起,我似乎无法使用对象密钥进行访问。
此外,data.fields[0]
会提供整个firstName对象,但我似乎无法data.fields[0]["field"]
或data.fields[0].field
感谢。
答案 0 :(得分:5)
您可以使用.find
查找数组中的特定元素:
var data={"fields":[{"firstName":{"fieldName":"First Name","required":!0,"provided":!1}},{"lastName":{"fieldName":"Last Name","required":!0,"provided":!1}},{"email":{"fieldName":"Email","required":!0,"provided":!1}}]}
const firstNameFieldName = data.fields
.find(obj => 'firstName' in obj)
.firstName.fieldName;
console.log(firstNameFieldName);
另请注意,您不拥有“JSON数组”。 JSON是一个符号,用于将对象表示为 strings 。你只有一个简单的对象。
如果将fields
转换为对象而不是数组,您可能会觉得更容易,例如:
var data = {
fields: {
"firstName": {
"fieldName": "First Name",
"required": true,
"provided": false
},
"lastName": {
"fieldName": "Last Name",
"required": true,
"provided": false
},
"email": {
"fieldName": "Email",
"required": true,
"provided": false
}
}
};
然后,您可以直接访问属性,例如data.fields.firstName
,而无需诉诸.find
。
答案 1 :(得分:1)
data.fields[0]
就是这个对象
{
"firstName": {
"fieldName": "First Name",
"required": true,
"provided": false
}
}
因此,如果您想要访问firstName
键对象的任何内容,则不需要使用索引,因为它是Object而不是Array。你可以像data.fields[0].firstName
那样访问它,它将等于
{
"fieldName": "First Name",
"required": true,
"provided": false
}
如果您想访问内部字段/属性,请执行data.fields[0].firstName.fieldName
等等