gpt4 book ai didi

javascript - 在 Sencha Touch 2.1 中按连字符后的第一个字母(如果存在)对列表进行排序和分组

转载 作者:行者123 更新时间:2023-11-28 20:40:37 25 4
gpt4 key购买 nike

我有要在使用 Sencha Touch 2.1 的列表中使用的数据集,其中大多数项目都以前缀开头(例如 P-、S-、CSV- 等)。然而,有些则不然。

前缀与列表排序和分组无关(因为前缀不是用户要查找的内容)。如果所有项目都有前缀并且所有前缀都是单个字母,我只会按第三个字母排序。由于情况并非如此,我真的不知道如何继续。

因此,我想按照以下方式设置条件分组和排序功能:如果 {name} 包含连字符:按第一个连字符后的第一个字母排序/分组,否则:按第一个字母排序

此外,如果字符串的其余部分相同,则某些名称在没有前缀的情况下将是相同的(例如 P-白蛋白、U-白蛋白),我希望具有“白蛋白”的行按其前缀进行排序。此外,即使有前缀,一些字符串也会是相同的,而另一个字段例如“年龄”会有所不同,所以

{ name: 'P-Albumin', age: '40 - 50' },
{ name: 'P-Albumin', age: '20 - 30' },
{ name: 'CSV-Albumin', age: '30' },
{ name: 'ASAT', age: '30'},

将在字母 A 下分组在一起,并进行排序,以便年龄等于 20 - 30 的行位于等于 40 - 50 的行之前,而带有前缀 CSV- 的行依次位于它们之前,并且剩余的是 ASAT最后。

感谢我能得到的任何提示、指点、帮助和建议。

最佳答案

要按名称排序,您可以在模型中创建转换后的字段。

Ext.define('MyApp.model.MyModel', {
extend : 'Ext.data.Model',
config : {
fields : ['name', 'age',
{
name : 'formattedName',
type : 'string',
convert : function(v, record) {
var unformattedName = record.get('name');
if (unformattedName.indexOf("-") != -1) {
return unformattedName.substring(unformattedName
.indexOf("-"));
} else {
return unformattedName;
}

}
}]
}
});

现在您可以在商店配置中设置排序优先级

Ext.define('MyApp.store.MyStore', {
extend : 'Ext.data.Store',
config : {
model : "MyApp.model.MyModel",
sorters: 'formattedName, name, age'
...
}
});

商店首先查看不带前缀的格式化名称,然后查看包含前缀的完整名称,最后查看年龄。

关于javascript - 在 Sencha Touch 2.1 中按连字符后的第一个字母(如果存在)对列表进行排序和分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14460128/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com