2017-11-08 9 views
1

我々は形式であるフィールドsomeId(ダミーで置換/簡略化)を有するSomeItemsの束を有する:私はSomeItemsのアレイを有しており、このようにそれをソートされた abc.def1.<someNumber> を:文字列の番号部分をソートしますか?

let rows = someItems.sort((lhs, rhs) => lhs.someId > rhs.someId) 

これはかなりちょうどアルファベット順にソートし、これは順序が少し奇妙出てくることを意味します

abc.def1.1 
abc.def1.1234 
abc.def1.1235 
abc.def1.2 
abc.def1.234 

は私ではなく、それが数値的にソートしたい - などの1、2、234、1234、など

これを行うにはどうすればよいですか?

+1

ただ、(正規表現または何か他のものを使用)したくない部分をフィルタリング。 – tyteen4a03

+0

また、コンパレータはブール値ではなく数値を返す必要があります。 – CRice

+0

Btwは、 '(lhs、rhs)=> lhs.someId> rhs.someId'は' sort'の動作比較関数ではないことに注意してください(https://stackoverflow.com/q/24080785/1048572) – Bergi

答えて

2

オプションでを使用できます。コンパレータ機能で比較する場合に

var array = ['abc.def1.1', 'abc.def1.1234', 'abc.def1.1235', 'abc.def1.2', 'abc.def1.234']; 
 

 
array.sort(function (a,b) { 
 
    return a.localeCompare(b, undefined, { numeric: true, sensitivity: 'base' }); 
 
}); 
 

 
console.log(array);

関連する問題