2016-07-14 4 views
2

並べ替える文字列として一連の番号があります。例えばノックアウトjsまたはjavacriptのスラッシュで番号をソート

4604158/1/7,4604181/1/2,4604158/1/8,4604182/1/2,4604181/1/3, 4604282/1/2 etc.

どのように私はノックアウトJSで、あるいは簡単なJavaScriptでこれを達成することができますか?

私は次のコードで(スラッシュなし)のみの数字を並べ替えることができています:

myObservableArray.sort(function (item1, piece2) { 
    return item1.stringWithSlashes < item2.stringWithSlashes ? -1 : (item1.stringWithSlashes > item2.stringWithSlashes ? 1 : 0); 
}); 
+0

? –

+0

並べ替えたいテーブルの列があります。列にはスラッシュを含む数字が含まれます。 –

+0

double floatに収まらない桁数が多すぎる場合、 '+" 1234/5/6 ".split("/")で数値に変換できます。join(" ")' –

答えて

3

あなたは第三部による2番目と等しい場合は、最初の部分での並べ替え、その後の文字列を分割してできました。

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

+0

ありがとう、btw、私は、次のコードによってノックアウトJSでの作業それを得た: 'myObservableArray.sort(関数(ITEM1、ITEM2){ VARのAA = item1.split( '/'); VaRのBB = item2.split( '/ 012a); var firstNumber = aa [0] bb [0]?1:0); var secondNumber = aa [1] bb [1]≧1:0); var thirdNumber = aa [2] bb [2]←1: 0); return firstNumber || secondNumber || thirdNumber; }}); ' –

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

関連する問題