Javascript:遍历JSON对象
这个问题在这里已经有了答案:
这严格来说是一个ecmascript-2017的答案,但它可以轻松地进入老版本的Javascript。
  您想要使用Object.values或Object.entries来遍历对象中的所有属性。  在Object.keys为你提供键的地方, Object.values为你提供了属性(well,duh),而Object.entries Object.values你提供了对象中每个条目的数组[key, value] 。 
  你不会在你当前的代码中使用这个键,所以这里是Object.values选项: 
    Object.values(this.props.phones).map((type) => {
        console.log(type)
        return (
            <p>Type of phone: {type}</p>
        )
    })
  这里是Object.entries选项,如果你想同时使用: 
    Object.entries(this.props.phones).map(([make, type]) => {
        console.log(make)
        console.log(type)
        return (
            <p>Make of phone: {make}</p>
            <p>Type of phone: {type}</p>
        )
    })
  您会看到我们正在使用ES6解构来从Object.entries获取数组中的两个值。 
垫片链接在每个功能的MDN页面上。
  一个对象的键是字符串,所以当你查看Object.keys(someObject)时你会得到什么。  与该键关联的值是您正在查找的对象。  为了获得值,在你的映射迭代中,你需要用你的密钥访问对象。 
var self = this;//close over this value for use in map
return (
    Object.keys(this.props.phones).map((type) => {
        console.log(self.props.phones[type]);//this will yield the object
        return (
            <p>Type of phone: {self.props.phones[type]}</p>
        )
    })
)
因为你迭代了对象键。 要在你的情况下返回对象,你必须使用给定的键来获得它的值:
render() {
    //this.props.phone contains the objects "Samsung", "iPhone", and "Google"
    return (
        Object.keys(this.props.phones).map((type) => {
            console.log(this.props.phones[type])
            ...
        })
    )
}
