我今天学到了什么?
通常使用点的方法订购文档:
2.1.3
当我们看到此编号时,我们将这些基本数字转换为序数:实际上,我们读了类似的东西
第二章的第一个字幕的第三段。
在更多情况下,我们必须考虑我们有类型的案例
2.2
因此缺少编号的第三个组成部分,因为这是0的。
标准化构成编号的零件
我在Internet上寻找risorse的解决方案是首先将所有零件数量归一化,以便我们始终具有相同的评估数字。
然后从
切换
1.3.5
2.1
5.3.5.6
10
a
1.3.5.0
5.3.5.6
2.1.0.0
10.0.0.0
通过增加表达数量的价值而使数字的位置无关紧要
为了避免10个小于2,就像字母数字系统一样,化妆是通过添加我们期望最好的数字来增加构成编号的数字。例如,始终在我们得到的每个部分中添加100个:
101.103.105.100
105.103.105.106
102.101.100.100
110.100.100.100
尽管用数字表达了我们所拥有的,但我们将其作为字符串评估,因为它大大简化了比较,还允许您管理包含字母的数字。例如,我们可以拥有
7.1.b
7.2
变成
107.101.10b.100
107.102.100.100
实现此算法的代码我写了
// considerando che si possa arrivare ad una numerazione di centinaia
const templatePart = '1000';
// numerazione composta da 6 livelli di annidamento
const template = [templatePart, templatePart, templatePart, templatePart, templatePart, templatePart];
const convertForComparing = (parNumeration: string) => {
// "somma" del numero template
let parts = parNumeration.split('.').map(
(p) => templatePart.substring(0, templatePart.length - p.length) + p);
// normalizzazione del numero di parti
parts = [...parts, ...template.slice(parts.length)];
return parts.join('.');
};
const sortByParagraphNumeration = (a: Item, b: Item) => {
const pa = convertForComparing(a.par.toLowerCase() || '');
const pb = convertForComparing(b.par.toLowerCase() || '');
if (pa < pb) {
return -1;
}
if (pa > pb) {
return 1;
}
return 0;
};
的解释肯定缺乏形式主义,而且经验都太过经验,但在我的情况下似乎可以正常工作。
您将如何解决?