javascript - 通过键选择 JSON 数组对象

标签 javascript arrays json

我的 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
      }
    }
  ]
}

往下看我正在尝试这样做:

  1. 访问 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/

相关文章:

javascript - Chrome 不支持 Javascript 中的原型(prototype)属性吗?

javascript - 将 FormData 对象放入数组中以从不同的输入文件上传文件

xml - XML 在未来还有一席之地吗?

json - 如何在 react native 应用程序中获取带有 header 的 api(POST)

javascript - 如何从 AJAX 成功函数解析此 json 字符串?

javascript - 如何在一个样式标签 react 中添加多行CSS对象?

javascript - 使用 ajax 调用更改 dataTable 列数量

javascript - 如何从 PostgreSQL 中提取数据,处理,然后存储在 javascript 中?

c - 预期为 ‘const char *’ 但 C 中的参数类型为 ‘char **’

java - 当我没有时,数组一直将 0 作为数字计数