不仅显示值,还显示键的地图

时间:2019-03-03 00:40:40

标签: javascript

如果我有这个对象:

const json = {
  products: [
    {
      id: 0,
      name: "Chair Roby",
      style: "Leather",
      color: "red",
    }
  ]
};

我可以在其内部的数组上进行映射,并像这样在数组内部显示对象中的所有项目:

const prod = json.products.map(item => {
  return (
      <ul>
        <li>
          {item.name}
        </li>
        <li>
          {item.style}
        </li>
         <li>
          {item.color}
        </li>
      </ul>
  );
});

这列出了我的值,但是如何显示名称,样式和颜色之类的键?

4 个答案:

答案 0 :(得分:2)

在每个项目的Object.entries上使用另一个嵌套地图:

const json = {
  products: [
    {
      id: 0,
      name: "Chair Roby",
      style: "Leather",
      color: "red",
    },
    {
      foo: 'bar'
    }
  ]
};

class MyList extends React.Component {
  render() {
    return json.products.map((obj) => (
      <ul>
        { 
          Object.entries(obj).map(([key, val]) => (
            <li>
              {('key: ' + key +  ', val: ' + val)}
            </li>
          ))
        }
      </ul>
    ));
  }
}
ReactDOM.render(
  <MyList />,
  document.getElementById("react")
);
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.6.3/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.6.3/umd/react-dom.production.min.js"></script>
<div id="react"></div>

答案 1 :(得分:2)

最好的方法是:

const prod = Object.keys(json.products).forEach(productKey => { return ( <ul> <li> {productKey} - {json.products[productKey]} </li> </ul> ); });

答案 2 :(得分:1)

尝试一下

 Object.keys(json).map(Followed by necessary code)

答案 3 :(得分:1)

const prod = json.products.map(item =>
      <ul>
          {Object.entries(item).map((key, value) =>
             <li>{key}: {value}</li>
          }
      </ul>
);