#javascript #reactjs #jsx
#javascript #reactjs #jsx
Вопрос:
Я новичок в JSX, и я пытаюсь получить количество сотрудников для каждой команды, this.state.teams[0].employee.length
это даст мне количество сотрудников для [0]
объекта в массиве, как я могу получить количество сотрудников для каждой команды и отобразить его только один раз?
render() {
const {teams, isLoading} = this.state;
const { location } = this.props;
if (isLoading) {
return <p>Loading...</p>;
}
// console.log("Number of Employees team", this.state.teams[0].employee.length);
const teamList = teams.map(team => {
console.log("TEAM Employees", teams[0].employee.length);
return <tr key={team.id}>
<td>
<div className="tableContent">
<div>
{team.name}
</div>
<div>
<ul>{team.employee.map(employee => {
return <li key={employee.id}>{employee.name}: {employee.email}</li>
})}</ul>
</div>
<div>
{team.employee.map(employee => {
return <li key={employee.id}>{teams[0].employee.length}</li>
})}
</div>
</div>
</td>
</tr>
});
Комментарии:
1. что такое
teams
?2.
teams
задан ли массив вconstructor
this.state = {teams: [] }
с ответом api, которыйsetState({teams: data})
3. можете ли вы привести пример объектов внутри
teams
массива4.это то, что показано в
console.log(teams)
0: {id:1 name: "Team1", employees: Array(2)}
5. Я считаю, что это
team.employee.length
сработало бы
Ответ №1:
Вы можете попробовать это для конкретной команды:
const teamList = teams.map(team => {
console.log("TEAM Employees", team.employee.length);
}
или это для количества сотрудников во всех командах:
const numberOfAllEmployees = teams.map(team => team.employee.length).reduce((a,b) => a b);
Ответ №2:
Вы можете использовать Object.keys(teams[0].employee).length
Метод Object.keys() возвращает массив собственных перечислимых имен свойств данного объекта, повторяющихся в том же порядке, что и в обычном цикле. MDN