我的 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
}
}
]
}
往下看我正在尝试这样做:
- 访问 firstName 对象的
fieldName
。是否可以在不使用索引的情况下做到这一点?
data.fields
给我对象数组。从那里开始,我似乎无法使用对象键进行访问。
此外,data.fields[0]
给出了整个 firstName 对象,但我似乎无法做到 data.fields[0]["field"]
或data.fields[0].field
谢谢。
最佳答案
您可以使用 .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 是一种符号,用于将对象表示为字符串。您只有一个普通的对象。
如果将 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
。
关于javascript - 通过键选择 JSON 数组对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50402033/