[過去ログ] JavaScript の質問用スレッド vol.125 (1002レス)
上下前次1-新
抽出解除 必死チェッカー(本家) (べ) 自ID レス栞 あぼーん
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
リロード規制です。10分ほどで解除するので、他のブラウザへ避難してください。
374(1): デフォルトの名無しさん (ワッチョイ abbd-SbnF [49.129.243.33]) [sage] 2022/12/12(月) 02:45:20.07 ID:BD7ZISK00(1/3) AAS
>>373その認識で合ってる。
MOV は配列で、その各要素も配列(2要素の配列)。
なんでそんな構造にしてるのかは知らん。
385: デフォルトの名無しさん (ワッチョイ abbd-SbnF [49.129.243.33]) [sage] 2022/12/12(月) 13:29:27.02 ID:BD7ZISK00(2/3) AAS
余談だが、>>378378(1): デフォルトの名無しさん (ワッチョイ c94b-7TF2 [110.2.215.28 [上級国民]]) [sage] 2022/12/12(月) 11:26:49.23 ID:9mOu9R4R0(6/14) AAS
function SELfn(Sx){
Bs = BNDfn(Sx)
MOV = []
for(g=0; g<GUI.length; g++){
MOV.push([Math.abs(GUI[g]-Bs[0]), GUI[g]-Bs[0]])
MOV.push([Math.abs(GUI[g]-Bs[2]), GUI[g]-Bs[2]])
}
MOV2 = SORTfn(MOV)
Sx.translate(MOV2[0][1], 0)
}
function SORTfn(f0){
f1 = []
for(i=0; i<f0.length; i++) f1.push(f0[i])
f1.sort(
function(a,b){
if(a[0] < b[0]) return -1
if(a[0] > b[0]) return 1
if(a[0]== b[0]) return 0
}
)
return f1
}
function BNDfn(Bx){
Bz = Bx.geometricBounds
if(STB) Bz = Bx.visibleBounds
if(Bx.clipped) Bz = Bx.pageItems[0].geometricBounds
return Bz
}
sort の比較関数ってわざわざそういうまどろっこしい実装にしてるのをよく見るけど、数値なら
function(a,b){
return a[0] - b[0];
}
でいいのよ。
順序を見る要素が複数あるなら
function(a,b){
let c = a[0] - b[0];
if (c) return c;
c = a[1] - b[1];
if (c) return c;
return a[2] - b[2];
}
とか、短い表現なら
function(a,b){
let c;
if (c = a[0] - b[0]) return c;
if (c = a[1] - b[1]) return c;
return a[2] - b[2];
}
とか。
これをループで回すのも有りかも。
あ、複数要素の比較はあくまで例であって、>>378 のデータ構造とは関係無いよ。
387: デフォルトの名無しさん (ワッチョイ abbd-SbnF [49.129.243.33]) [sage] 2022/12/12(月) 13:39:57.47 ID:BD7ZISK00(3/3) AAS
>>386abs なんてほとんどコストかからないんだから、元の値と絶対値の両方を保存するのは無駄な気がする。
配列の保存やアクセスの方がコストかかったりして。
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.030s