Wenn Sie sich den folgenden Code ansehen, gibt es eine bessere Möglichkeit, die Anzahl von Elementen zu ermitteln, die ein bestimmtes Schlüssel/Wert-Paar in einem Reaktionszustand enthalten?Intelligentere Methode zum Zählen von Werten in Objekten (JS, React)
Diese Methode scheint, als könnte es einen Engpass verursachen, sobald die Liste, die ich durchmache, groß wird.
Hier ist ein vereinfachtes Beispiel für die Frage auf der Hand:
class App extends React.Component {
constructor() {
super();
this.state = {
animals: [
{type: 'cat'},
{type: 'dog'},
{type: 'cat'},
]
};
}
render() {
return(
<div className="app">
<Categories state={this.state} />
</div>
);
}
}
class Categories extends React.Component {
constructor() {
super();
this.countItems = this.countItems.bind(this);
}
countItems(type) {
var count = 0;
for(var i = 0; i < this.props.state.animals.length; i++) {
if(this.props.state.animals[i].type === type) {
count++;
}
}
return count;
}
render() {
return(
<div className="categories">
<div>Total animals: {this.props.state.animals.length}</div>
<div>Cats: {this.countItems('cat')}</div>
<div>Dogs: {this.countItems('dog')}</div>
</div>
);
}
}
ReactDOM.render(<App />, document.getElementById('container'));
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>
<div id="container"></div>