javascript - 迭代 JSON 以创建导航

标签 javascript arrays json reactjs

这是我拥有的 JSON,我想通过 pageName 进行迭代以在 li 中构建导航。我尝试使用react。

{
"pname": "Project Name",
"page1": [{
    "pageName": "Home",
    "content": "xyz"
}],

"page2": [{
    "pageName": "About Us",
    "content": "abc"
}]
}

从“./data/data”导入数据; 下面的代码给了我 pname、page1 和 page2,相反,我想要 page1 和 page2 值并且想要忽略 pname。

return (
      <ul className="navbar-nav">
     {
      Object.keys(data).map((value, index) => {
        return (
           <li key={value} className="nav-item active">     
                <a className="nav-link" href="#">{value} <span className="sr-only">(current)</span></a>
           </li> 
        );
      })
      }
)     
      </ul> 

我的尝试 2,返回错误“预期赋值或函数调用,而是看到一个表达式 no-unused-expressions”

return (
      <ul className="navbar-nav">
     {
{
      Object.keys(data).map((value, index) => {
        return (
           <li key={value} className="nav-item active">     
               {value.pageName.map(function (component, i) { 
                <a className="nav-link" href="#">{value.pageName}</a>
              })}
           </li> 
        );
      })
      }
)     
      </ul>           

最佳答案

检查当前键是否包含数组,如果是则显示它。

return (
  <ul className="navbar-nav">
    {Object.keys(data).map(
      (value, index) =>
        Array.isArray(data[value]) && (
          <li key={index} className="nav-item active">
            <a className="nav-link" href="#">
              {data[value][0].pageName}{" "}
              <span className="sr-only">(current)</span>
            </a>
          </li>
        )
    )}
  </ul>
);

<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.6.0/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.6.0/umd/react-dom.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/babel-standalone/6.21.1/babel.min.js"></script>
<div id="root"></div>

<script>

const data = {
  pname: "Project Name",
  page1: [
    {
      pageName: "Home",
      content: "xyz"
    }
  ],

  page2: [
    {
      pageName: "About Us",
      content: "abc"
    }
  ]
};
  
</script>

<script type="text/babel">

class App extends React.Component {
  render() {
    return (
      <div>
        <ul className="navbar-nav">
          {Object.keys(data).map(
            (value, index) =>
              Array.isArray(data[value]) && (
                <li key={index} className="nav-item active">
                  <a className="nav-link" href="#">
                    {data[value][0].pageName}{" "}
                    <span className="sr-only">(current)</span>
                  </a>
                </li>
              )
          )}
        </ul>
      </div>
    );
  }
}

ReactDOM.render(
    <App />,
    document.getElementById('root')
);
</script>

关于javascript - 迭代 JSON 以创建导航,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59588994/

相关文章:

javascript - IE10默认模式下的圆 Angular

javascript - sqlite.get() 导致 TypeError : Cannot read property 'get' of null

c++ - 运行时检查失败 #02,随机数添加到数组

javascript - AngularJS - 使用结果从 Factory 读取 JSON

php - 比较 2 个 json 字符串以查找新条目

java - 如何用Java读取JSON数据

javascript - 正则表达式选择相邻的模式匹配项作为单个项

javascript - kendo ui 图表 donut 设置突出显示

arrays - 如何在 Perl 中正确替换哈希数组中的值?

java - 使用java中的通用表达式将数组列表拆分为另一个数组列表