【发布时间】:2015-11-26 07:16:22
【问题描述】:
新主干,我正在尝试按字母数字对集合进行排序,并且使用传入的一个模型进行排序,如下所示工作正常:
comparator: function(model) {
return model.get('id').replace(/[^0-9^\.]/g,"")|0;
}
这是我之前的问题和解决方案: Sort a collection alphanumerically in backbone
现在,如果我做一些类似区域设置比较的事情:
comparator: function(model1, model2) {
if ((model1.get('id').localeCompare(model2.get('id'))) < 0)
return -1;
}
if ((model1.get('id').localeCompare(model2.get('id'))) >0) {
return 1;
}
return 0;
}
这适用于输入:“id-1, id-0, id-2, id-199” 排序为“id-0, id-1, id-2, id-199”
但这里没有按数字排序:“id-1, id-0, id-2, id-199, id-99” 为“id-0, id-1, id-2, id-199, id -99" -- id-99 应该在 id-199 之前。显然是因为没有合并数值比较。我还没有成功地实现它,有什么想法吗?
【问题讨论】:
-
这是无效的javascript代码。括号没有正确使用。如果句子也有同样的问题,应该是
if (model1.get('id').localeCompare(model2.get('id')) < 0)和后者。 -
@suish - 抱歉,我已经编写了代码并依靠我的能力在几乎午夜时匹配括号。我想我现在已经纠正了。
标签: javascript sorting backbone.js