-1

次のコードを使用して、JavaScript で配列をソートしています。

 array.sort(function(a,b){
             var score_a = $.fuzzyMatch(a['name'], user).score,
                 score_b = $.fuzzyMatch(b['name'], user).score;

            return score_a < score_b ? -1 : score_a === score_b ? 0 : 1;
       });

並べ替えは、配列内の各行の「名前」プロパティを取得し、それを fuzzymatch 関数で実行してスコアを返すことで、最も関連性の高い一致が配列の先頭に返されるようにします。

a['folcode']ただし、この場合はまたはになる別のプロパティを並べ替えに含めたいb['folcode']

要約すると、コードを変更して、最適な名前の一致['folcode'] == 4でソートされた行を常に先頭に配置し、最適な名前の一致でソートして行を['name']返すにはどうすればよいですか['folcode'] == 3...など...

4

1 に答える 1

1

folcode主に でソートし、各name でソートする場合は、 に対して現在実行しているものと同じようにfolcodeの比較を生成する必要がありますが、等号条件でのみ名前比較の値を返します。folcodename

function(a,b) {

    var code_a = a.folcode;
    var code_b = b.folcode;

    var score_a = $.fuzzyMatch(a.name, user).score;
    var score_b = $.fuzzyMatch(b.name, user).score;

    if(code_a === code_b)
        return score_a < score_b ? -1 : score_a === score_b ? 0 : 1;

    return code_a < code_b ? -1 : 1;

}
于 2012-10-15T08:19:33.523 に答える