Too many times I've written code like this:
class MyComponent extends React.PureComponent {
render() {
return <ul>
{Object.keys(this.props.someDictionary).map(key => {
return <li key={key}><b>{key}:</b> {this.props.someDictionary[key]}</li>
})}
</ul>
}
}
The clunky thing about this is that you have to reference the dictionary twice. Makes it harder to refactor. In Python, you do this instead:
for key, value in some_dictionary.items():
print(f'$key: $value')
To do the same in JavaScript make a function like this:
function items(dict, fn) {
return Object.keys(dict).map((key, i) => {
return fn(key, dict[key], i)
})
}
Now you can use it "more like Python":
class MyComponent extends React.PureComponent {
render() {
return <ul>
{items(this.props.someDictionary, (key, value) => {
return <li key={key}><b>{key}:</b> {value}</li>
})}
</ul>
}
}
UPDATE
Thanks to @Osmose and @saltycrane for alerting me to Object.entries()
.
class MyComponent extends React.PureComponent {
render() {
return <ul>
{Object.entries(this.props.someDictionary).map(([key, value]) => {
return <li key={key}><b>{key}:</b> {value}</li>
})}
</ul>
}
}
Comments
Your python example is a little bit wrong. It should be this:
```python
for key, value in some_dictionary.items():
print(f'{key}: {value}')
```