<script src="https://cdnjs.cloudflare.com/ajax/libs/react/17.0.2/umd/react.development.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/17.0.2/umd/react-dom.development.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/babel-standalone/6.26.0/babel.min.js"></script>
<script type="text/babel">
const { useState } = React;
{ name: 'John', age: 25, gender: 'Male' },
{ name: 'Jane', age: 30, gender: 'Female' },
{ name: 'Sam', age: 22, gender: 'Male' },
{ name: 'Anna', age: 28, gender: 'Female' },
{ name: 'Mike', age: 35, gender: 'Male' },
{ name: 'Emily', age: 27, gender: 'Female' },
{ name: 'Chris', age: 31, gender: 'Male' },
{ name: 'Sarah', age: 29, gender: 'Female' },
{ name: 'David', age: 26, gender: 'Male' },
{ name: 'Olivia', age: 32, gender: 'Female' },
{ name: 'Daniel', age: 24, gender: 'Male' },
{ name: 'Sophia', age: 23, gender: 'Female' },
const [sortedData, setSortedData] = useState(data);
const [sortDirection, setSortDirection] = useState('asc');
const handleSort = () => {
const newSortDirection = sortDirection === 'asc' ? 'desc' : 'asc';
const sorted = [...sortedData].sort((a, b) => {
if (newSortDirection === 'asc') {
return a.gender.localeCompare(b.gender);
return b.gender.localeCompare(a.gender);
setSortDirection(newSortDirection);
<div className='container'>
<h1 className='title'>React Js Sort By Gender</h1>
<button className='sort-button' onClick={handleSort}>Sort by Gender</button>
<table className='data-table'>
<th className='table-header'>Name</th>
<th className='table-header'>Age</th>
<th className='table-header'>Gender</th>
{sortedData.map((item, index) => (
<tr key={index} className='table-row'>
<td className='table-data'>{item.name}</td>
<td className='table-data'>{item.age}</td>
<td className='table-data'>{item.gender}</td>
ReactDOM.render(<App />, document.getElementById("app"));
box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
background-color: #007bff;
transition: background-color 0.3s ease;
background-color: #0056b3;
border-collapse: collapse;
background-color: #007bff;
border-bottom: 1px solid #ddd;
.table-row:nth-child(even) {
background-color: #f2f2f2;
background-color: #e0e0e0;