というオブジェクトの配列がありますcanvasObjects
。
各オブジェクトには、 と呼ばれる属性がありますz
。
オブジェクトに基づいてこの配列をソートしたいz
。sort()
メソッドを使用してこれを行うにはどうすればよいですか?
というオブジェクトの配列がありますcanvasObjects
。
各オブジェクトには、 と呼ばれる属性がありますz
。
オブジェクトに基づいてこの配列をソートしたいz
。sort()
メソッドを使用してこれを行うにはどうすればよいですか?
sort 関数にコンパレータを渡すだけです。
function compare(a,b) {
if (a.attr < b.attr)
return -1;
if (a.attr > b.attr)
return 1;
return 0;
}
canvasObjects.sort(compare);
またはインライン
canvasObjects.sort(function(a,b) {return (a.attr > b.attr) ? 1 : ((b.attr > a.attr) ? -1 : 0);} );
この投稿を見る
ここに投稿された他の回答を試してみましたが、次のものが最適であることがわかりました。
昇順:
canvasObjects.sort(function(a,b) { return parseFloat(a.z) - parseFloat(b.z) } );
降順:
canvasObjects.sort(function(a,b) { return parseFloat(b.z) - parseFloat(a.z) } );
プロパティ「z」の減算を返す無名関数を sort メソッドに送信します。
var arr = [{z:2},{z:4},{z:5},{z:1},{z:3}];
arr.sort(function(a,b) {return a.z - b.z});
上記では、z に 1、2、3、4、5 の順序で数字を入れています。順序を逆にするには、"bz - az" を返すようにします。