【问题标题】:How can I get data from JSON array using the array's elements? [duplicate]如何使用数组的元素从 JSON 数组中获取数据? [复制]
【发布时间】:2021-12-17 01:46:17
【问题描述】:
{
"Centers": {
    "Athens": [
        {
            "name":"name1",
            "lat":"",
            "lon":"",
            "address":"address1",
            "tel":"",
            "email":"",
            "link":""
        },
        {
            "name":"name2",
            "lat":"",
            "lon":"",
            "address":"address2",
            "tel":"",
            "email":"",
            "link":""
        }       
    ]
}
}

我有这个 JSON 文件,我想获取我使用其名称指定的元素的地址。 像这样的:

alert( stores.Centers.Athens["name"=="name1"].address );

我有什么办法可以做到这一点,或者我应该重新制作我的 JSON 文件吗?

编辑:

.find(x => x.name === 'name1') 不起作用。它返回“未定义”。 findIndex() 也返回“-1”。我怀疑这是因为它是 JSON 文件而不是对象列表,这意味着属性键是双引号的。

【问题讨论】:

  • ".find(x => x.name === 'name1') 不起作用。" Yes it does。如果 store 包含正确解析的 JSON,它应该可以正常工作。如果没有正确解析,那么stores.Centers 应该已经是undefined。您需要提供minimal reproducible example 以便我们能够进一步帮助您。

标签: javascript html jquery arrays json


【解决方案1】:

您可以使用findoptional chaining 轻松实现结果

stores.Centers.Athens.find((o) => o.name === "name1")?.address

const stores = {
  Centers: {
    Athens: [
      {
        name: "name1",
        lat: "",
        lon: "",
        address: "address1",
        tel: "",
        email: "",
        link: "",
      },
      {
        name: "name2",
        lat: "",
        lon: "",
        address: "address2",
        tel: "",
        email: "",
        link: "",
      },
    ],
  },
};
const address = stores.Centers.Athens.find((o) => o.name === "name1")?.address;
console.log(address);

【讨论】:

  • 不起作用,可能是因为 JSON 文件包含双引号的属性键。
  • 没关系。请在Codesandbox 添加您的代码,让我看看。我能为你做什么
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-02-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多