この記事の例では、js が Array.prototype.sort() を使用して配列オブジェクトを並べ替える方法を説明します。皆さんの参考に共有してください。具体的な分析は次のとおりです。
配列オブジェクトのソートについて話すときは、まず Array.prototype.sort() について簡単に見てみましょう。 sort メソッドは 1 つのパラメーター (関数) を受け取り、要素が String 型の場合は、Unicode コードを通じて比較されます。値が比較されます。比較関数が 1 を返した場合、2 つの要素は位置を交換し、-1 は位置を交換しません。まず例を見てみましょう:
var arr = [3, 5, 2, 1] ;
// 小さいものから大きいものへ並べ替えます
arr.sort(関数 (a, b) {
a > b 1 : -1;
を返します。
});
// 得られた結果: [1, 2, 3, 5]
さて、本題に戻りますが、配列オブジェクトをソートする場合、どのように書けばよいでしょうか?実際、原理は上記と同じです。たとえば、
var arr = [
{ a : 2, b : 3.2}、
{ a : 3, b : 1.2}、
{ a : 4, b : 2.2}、
{ a : 6, b : 1.2}、
{ a : 5, b : 3.2}
]
/// 属性 b で小さいものから大きいものまで並べ替えます
arr.sort(function(x, y){
x.b > y.b ? 1:-1;
を返します。
});
x と y は arr の要素、つまりオブジェクトであるため、2 つのオブジェクトのプロパティを直接比較するだけです。
上記の例では、最小の要素に重複がある場合、最初に b 属性で小さい順に並べ替え、最小の要素に重複がある場合は、a 属性で並べ替えます。書いたほうがいいでしょうか?
並べ替えるときは、まず b 属性で並べ替えます。x.b が y.b より大きい場合、x を y の右側に移動します。x.a と y.a を比較します。つまり、コードは次のようになります。
arr.sort(function (x, y) {
If (x.b > y.b) {
1 を返します;
} else if (x.b === y.b) {
戻り x.a > y.a 1 : -1;
} else if (x.b < y.b) {
return -1;
}
})
この記事が皆様の JavaScript プログラミング設計に役立つことを願っています。