You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Twig中对含逗号的姓名按字母排序?排查代码问题

问题排查与解决方案

1. 修正明显语法错误

你第一种写法存在逻辑漏洞:比较b的部分仅写了b.post.title.split(','),未取数组第一个元素[0],导致用字符串和数组做比较,直接让排序逻辑失效。正确写法需确保两边都提取逗号前的姓名部分:

{% for post in relationship.from|sort((a, b) => a.post.title.split(',')[0] <=> b.post.title.split(',')[0]) %}
    {# 你的渲染内容 #}
{% endfor %}

2. 检查Twig版本兼容性

Twig的箭头函数(=>)语法是Twig 2.10及以上版本才支持的特性。如果你的Twig版本低于2.10,箭头函数会被判定为无效语法,排序自然不生效。此时需改用旧版匿名函数写法:

{% for post in relationship.from|sort(function(a, b) {
    return a.post.title.split(',')[0] <=> b.post.title.split(',')[0];
}) %}
    {# 你的渲染内容 #}
{% endfor %}

3. 优化格式避免解析异常

虽然Twig对空格容忍度较高,但sort过滤器与后续括号间的空格可能引发解析问题,建议去掉空格,写成|sort((a, b) => ...)而非|sort ((a, b) => ...)。

逻辑验证说明

split(',')[0]会提取出逗号前的完整姓名(如John Doe、Jane Doe),通过<=>运算符做自然字符串比较时,Jane的字母顺序确实早于John,修正后即可得到你预期的排序结果。

内容的提问来源于stack exchange,提问作者Jonathan Tucker

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 09:27:21