オブジェクトの配列があります。
各オブジェクトで、「myLevel」というプロパティをターゲットにしています。このプロパティの値は、次の文字列構文で異なります。
[
{myLevel : 'CAT I #4'},
{myLevel : 'CAT I #6'},
{myLevel : 'CAT I #2'},
{myLevel : 'CAT II #15'},
{myLevel : 'CAT III #1'},
{myLevel : 'CAT II #7'},
]
次のように、オブジェクトが昇順で再配置されるように配列を並べ替えるにはどうすればよいですか。
[
{myLevel : 'CAT I #2'},
{myLevel : 'CAT I #4'},
{myLevel : 'CAT I #6'},
{myLevel : 'CAT II #7'},
{myLevel : 'CAT II #15'},
{myLevel : 'CAT III #1'}
]
正規表現を使用してパーツを照合し、それらのパーツを個別に確認します
var arr = [
{myLevel : "CAT I #4"},
{myLevel : "CAT I #6"},
{myLevel : "CAT I #2"},
{myLevel : "CAT II #15"},
{myLevel : "CAT III #1"},
{myLevel : "CAT II #7"}
];
var sorted = arr.sort(function(a,b){
var left = a.myLevel.match(/CAT (I+) #([0-9]+)/);
var right = b.myLevel.match(/CAT (I+) #([0-9]+)/);
if(left[1].length==right[1].length){
return left[2]-right[2];
}else return left[1].length-right[1].length;
});
match
収益
[0] whole matched string
[1] all the `I`'s
[2] the number after the #
1つ目if
は、I
カウントが同じかどうかを確認することです。同じかどうかは、番号で確認する必要があります。
番号で確認する必要がある場合は、それらの差を返すだけです。
私たちは数でチェックする必要がない場合は我々だけの量との差を返却する必要があるI
の
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加