javascript - 如何使按钮对对象数组按字母顺序进行排序javascript反应
问题描述
尝试在组件中创建一个按钮,该按钮按每个对象名称按字母顺序对对象数组进行排序,并在单击时在组件中呈现
menuItems = [{name: pizza}, {name: burger}]
class MenuItems extends Component {
handleclick = (item) => {
this.props.deleteMenuItem(item.id);
}
render(){
return (
<div>
<button onClick={this.handlechange}>filter a to z</button>
{this.props.menuItems.map((item) =>(
<li class="list" key={item.id}>
{item.name}
<br></br>
{item.body}
<br></br>
<img src={item.image}></img>
<br></br>
<button id={item.id} onClick={() => this.handleclick(item)}>delete </button>
</li>
))}
</div>
)
}
}
export default connect(null, {deleteMenuItem})(MenuItems)```
解决方案
你可以试试这个
menuSort = () => {
const newMenuItems = { ...this.props.menuItems };
newMenuItems.sort((a, b) => a.name.localeCompare(b.name));
this.setState({MenuItems: newMenuItems });
};
localeCompare() 方法返回一个数字,指示引用字符串是在排序顺序之前、之后还是与给定字符串相同。
然后在你的渲染函数中使用 MenuItems,就像你已经拥有的一样
推荐阅读
- redirect - NextJS 重定向 - req.headers.referer 丢失 - 如何获取原始 URL?
- azure-devops - 在 Azure YAML 管道中替换令牌任务歧义问题
- php - Laravel 项目创建 - Windows 平台
- javascript - Javascript - 使用键盘自动管理轮播
- javascript - 如何将方法传递给具有不同名称的表单提供程序以处理嵌套表单
- sql-server - Invoke-SqlCmd 缩短结果
- apache-spark - 如何获取 Delta Lake 1.0.0 库的 jar 文件
- php - Simplesamlphp 作为 SP - 从 IDP 端(Okta)启动登录
- php - 过滤和清理输入之间有什么区别吗?它们与参数化指令一起对 SQLi 和 XSS 有效吗?
- salesforce - How to do Salesforce SOQL query to only select objects which have record counts greater than zero?