在淘汰赛js或javascript

时间:2016-07-14 14:00:41

标签: javascript sorting knockout.js

我有一系列数字作为我想要排序的字符串。

例如,

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);
});

2 个答案:

答案 0 :(得分:3)

你可以拆分字符串,然后用第一部分排序,然后是第二部分,如果相等则是第三部分。

&#13;
&#13;
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;
&#13;
&#13;

答案 1 :(得分:1)

这是一种检查任何分隔符和任何长度的分离结果数组的动态方法。

&#13;
&#13;
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;
&#13;
&#13;