トップへ戻るニュースフォーラムFLASH-ML 過去ログBak@Flaダウンロードよくある質問と答
ログイン
ユーザ名:

パスワード:


パスワード紛失

新規登録
メインメニュー
メイン
   ActionScript 3.0 特設会議室
     同じ要素が入った配列のソート
投稿するにはまず登録を

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
mitsuru_w
Åê¹ÆNo.43885
投稿日時: 2009-11-10 0:29
新米
居住地:
投稿: 25
使用環境:
MacOSX10.5.3,FlashCS3
同じ要素が入った配列のソート
お世話になります。

配列のソートに関して、
おそらくとても初歩的な問題だとは思うのですが、
解決方法がわからなく投稿させていただきました。


下記ソースは配列[arrayA]を値によって昇順ソートし、
ソート後のインデックス番号を並べた配列[arrayB]をとる。
という単純なものです。
var arrayA:Array=[0,0,0,0,0,0,0,0,0,0];
var arrayB:Array=arrayA.sort(Array.RETURNINDEXEDARRAY | Array.NUMERIC);

trace(arrayB);

このように[arrayB]をとったとき、
arrayA内で同じ値の要素はインデックス番号が若い順になってほしいのです。

上記トレース結果でいえば、

5,1,2,3,4,0,6,7,8,9

となってしまうのですが、これを

0,1,2,3,4,5,6,7,8,9

となってほしい、というわけなのですが、
ソートの書き方に不備があるのでしょうか?
何か解決方法があれば、アドバイスをいただければ幸いです。

よろしくお願いいたします。


----------------
拝)ミツル

joyko
Åê¹ÆNo.43886
投稿日時: 2009-11-10 1:22
常連
居住地: 埼玉県
投稿: 167
使用環境:
WinXP(SP3)
Flash8 Basic
FlashCS3
Flash CS4
Re: 同じ要素が入った配列のソート
mitsuru_wさん、

引用:
0,1,2,3,4,5,6,7,8,9
となってほしい、というわけなのですが、
ソートの書き方に不備があるのでしょうか

trace(arrayB)は、0,1,2,3,4,5,6,7,8,9 になりますが・・・
mitsuru_w
Åê¹ÆNo.43887
投稿日時: 2009-11-10 1:57
新米
居住地:
投稿: 25
使用環境:
MacOSX10.5.3,FlashCS3
Re: 同じ要素が入った配列のソート
joykoさん

…本当ですか…

そうですよね、普通に考えたらなりますよね…
スクリプト云々より、僕の環境がなにか問題なのかもしれません。

いずれにしろ、不安定なのかもしれないので、
sortを使わず他の方法で回避してみることにします。


お騒がせしました。
確認・報告いただき有り難う御座いました。


----------------
拝)ミツル

Tonpoo (gaienboy改め)
Åê¹ÆNo.43889
投稿日時: 2009-11-10 10:27
職人
居住地: 東京・神宮前
投稿: 717
使用環境:
Windows 7 Professional,
Flash CS5 Pro,
Flash Player 10,1,102,64
Re: 同じ要素が入った配列のソート
gaienboyです。
どうやら、AS2の時とAS3の時とで挙動が違うようですね。AS2の時は
0,1,2,3,4,5,6,7,8,9 

となりましたが、AS3でやったら
5,1,2,3,4,0,6,7,8,9

となりました。


----------------
Tonpoo (a.k.a. gaienboy)
Tonpoo.com / TONPOOBLOG / twitter@tonpootwit

Tonpoo (gaienboy改め)
Åê¹ÆNo.43890
投稿日時: 2009-11-10 10:36
職人
居住地: 東京・神宮前
投稿: 717
使用環境:
Windows 7 Professional,
Flash CS5 Pro,
Flash Player 10,1,102,64
Re: 同じ要素が入った配列のソート
gaienboyです。
AS3で以下のようにsort処理を分割したら、
0,1,2,3,4,5,6,7,8,9 の順で出力されました。
var arrayA:Array=[0,0,0,0,0,0,0,0,0,0];
var arrayB:Array=arrayA.sort(Array.RETURNINDEXEDARRAY);
arrayB = arrayB.sort(Array.NUMERIC);
trace(arrayB);


書き方をまとめただけですが、下記でもOKでした。
var arrayA:Array=[0,0,0,0,0,0,0,0,0,0];
var arrayB:Array=arrayA.sort(Array.RETURNINDEXEDARRAY).sort(Array.NUMERIC);
trace(arrayB);


----------------
Tonpoo (a.k.a. gaienboy)
Tonpoo.com / TONPOOBLOG / twitter@tonpootwit

mitsuru_w
Åê¹ÆNo.43892
投稿日時: 2009-11-10 13:07
新米
居住地:
投稿: 25
使用環境:
MacOSX10.5.3,FlashCS3
Re: 同じ要素が入った配列のソート
gaienboyさん


ご検証ありがとうございます!

ASバージョンで処理が違うのですね。
今後も気をつけないといけないですね


対処方法も参考にさせていただきます。

ありがとうございました。


----------------
拝)ミツル

スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ

投稿するにはまず登録を
 
Copyright (C) 2003 FLASH-japan. All rights reserved.
Powered by Xoops