【问题标题】:How to access then name property of an object in an array如何访问数组中对象的名称属性
【发布时间】:2021-11-01 19:13:06
【问题描述】:

经过一番研究,我发现通过映射访问此数组的方法类似于

const locations = [
    {
      country: "United States",
      city: "Henderson",
      state: "Kentucky",
      postalCode: 42420,
    
    },
    {
     
      country: "United States",
      city: "Henderson",
      state: "Kentucky",
      postalCode: 42420,
     
    }]

locations.map((item)=>{<p>{item.city}</p>})

假设对于上述情况,我想获得诸如 countrycity 之类的名称,我该如何提取这些对象 titles 。 我浏览了一些文档和资源,但我没有找到明确的解决方案

【问题讨论】:

  • Object.entries(item)
  • @FlashThunder map 不会修改数组,而是创建一个新数组。
  • Array 是数组构造函数;不要在内置类型之后命名变量。
  • @FlashThunder “它不应该用于产生输出” 好吧,我不同意。它应该只用于产生输出:)
  • "JSX 没有输出。" ¯\_(ツ)_/¯ JSX 是一个语法扩展,但是转译的结果是一个返回对象的函数调用。所以我仍然无法理解你是如何得出这样的结论,即从 react 的角度来看 map 不是用于产生输出的。

标签: javascript reactjs json


【解决方案1】:

在地图中,您应该通过删除大括号来返回对象

locations.map(item => <p>{item.city}</p> )

或者如果您保留大括号,请添加明确的return

locations.map(item => { return <p>{item.city}</p> })

如果您想为页面上显示的内容添加更多内容,您可以在地图的返回中添加更多字段

locations.map(item => <p>{item.country}, {item.city}, {item.state}, {item.postalCode}</p> )

【讨论】:

  • 是的,以上是正确的,但现在是否可以为您的情况动态获取该对象的标题,标题将是“城市”、“国家”,例如
  • @cocosa 只是在输出中添加更多内容? &lt;p&gt;{item.country}, {item.city}&lt;/p&gt;
  • 是的,谢谢,但这不会给我“项目”引用的标题,例如我想获得“Object.key”标题
【解决方案2】:

我想你的意思是你想使用属性名称作为标签?如果是这样,您需要将每个项目的 Object.keys()Object.entries() 迭代为嵌套的 map() 调用。您需要一个包含组件来保存它,这里是一个外部 &lt;div&gt; 元素。

const locations = [
  {
    country: 'United States',
    city: 'Henderson',
    state: 'Kentucky',
    postalCode: 42420,
  },
];

locations.map((item) => {
  <div key={item.unique_property}>
    {Object.entries(item).map((label, value) => (
      <p><span>{label}: </span>{value}</p> 
    ))}
  </div>;
});

这将输出如下内容

<div>
  <p><span>country: </span>United States</p>
  <p><span>city: </span>Henderson</p>
  <p><span>state: </span>Kentucky</p>
  <p><span>postalCode: </span>42420</p>
</div>

【讨论】:

    【解决方案3】:

    虽然下面应该工作没有测试。

    {locations.map((val) =>
        Object.keys(val?.fields).map((field) => (
          <p key={field}>
            Key : {field}
            Value:{val?.fields[field]}
          </p>
        ))
      )}
    

    【讨论】:

    • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
    猜你喜欢
    • 2012-01-20
    • 1970-01-01
    • 1970-01-01
    • 2015-08-05
    相关资源
    最近更新 更多