我有一系列数字作为我想要排序的字符串。
例如,
4604158/1/7,4604181/1/2,4604158/1/8,4604182/1/2,4604181/1/3, 4604282/1/2 etc.
如何使用knockout js甚至简单的javascript来实现这一目标?
我只能使用以下代码对数字(不带斜线)进行排序:
myObservableArray.sort(function (item1, piece2) {
return item1.stringWithSlashes < item2.stringWithSlashes ? -1 : (item1.stringWithSlashes > item2.stringWithSlashes ? 1 : 0);
});
答案 0 :(得分:3)
你可以拆分字符串,然后用第一部分排序,然后是第二部分,如果相等则是第三部分。
var array = ['4604158/1/7', '4604181/1/2', '4604158/1/8', '4604182/1/2', '4604181/1/3', '4604282/1/2'];
array.sort(function (a, b) {
var aa = a.split('/'),
bb = b.split('/');
return aa[0] - bb[0] || aa[1] - bb[1] || aa[2] - bb[2];
});
console.log(array);
&#13;
答案 1 :(得分:1)
这是一种检查任何分隔符和任何长度的分离结果数组的动态方法。
var array = ['4604158/1/7', '4604181/1/2', '4604158/1/8', '4604182/1/2', '4604181/1/3', '4604282/1/2'];
var separator = '/';
array.sort(function(a, b) {
b = b.split(separator);
return a.split(separator)
.some((v, i) => (+v > +b[i]));
})
console.log(array);
&#13;