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])
...
})
)
}
链接地址: http://www.djcxy.com/p/28823.html