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

パスワード:


パスワード紛失

新規登録
メインメニュー
メイン
   迷える子羊の部屋【初心者専用】
     配列の要素を異なる配列を参照して並び替えたい
投稿するにはまず登録を

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
mikata
Åê¹ÆNo.48888
投稿日時: 2012-3-10 13:47
新米
居住地:
投稿: 9
使用環境:
MAC OS 10.4
Flash CS3
配列の要素を異なる配列を参照して並び替えたい
数値の入っている要素の配列を異なる配列を参照し任意順に並べ替えたいと思い、
配列のソートで比較関数を呼び出し並べ替えようとしています。

SectionArrayの要素には
SectionArray[0]=1010001,20120309;
SectionArray[1]=1010002,20120309;
SectionArray[2]=1010003,20120309;
?省略?
SectionArray[9]=1017003,20120309;
といった順で上7桁が数値の小さい順に並んだ要素が入っています。
上7桁の数値を別の配列(Turnのオブジェクトの要素)順を参照して並び替えたいのです。

SectionArray.sort(turnOrder);

function get_tern(p_num) {
    Turn = [1010001, 1010002, 1010005, 1010006, 1010007, 1010003, 1010004, 1017001, 1017002, 1017003];
	var thelength = Turn.length;
	var nFind = -1;
	for (i=0; i<thelength; i++) {
		if (Turn[i] == p_num) {
			nFind = i;
			break;
		}
	}
	return bFind;
}

function turnOrder(a, b) {
	room1 = get_tern(a.slice(0, 7));
	room2 = get_tern(b.slice(0, 7));
	if (room1>room2) {
		return 1;
	} else if (room1<room2) {
		return -1;
	} else {
		return 0;
	}
}

としてみましたが、思った結果が得られない状態ですのでお手数おかけいたしますがご教授お願いいたします。

環境はMacOS:10.6 Flash:CS3  actionscript:2.0となっております。
どうぞよろしくお願いいたします。
野中文雄
Åê¹ÆNo.48889
投稿日時: 2012-3-10 15:11
ちょんまげら
居住地: 東京
投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1)
Re: 配列の要素を異なる配列を参照して並び替えたい
「思った結果」はどういうもので、それに対して実際にはどういう結果になるのでしょうか。→【うまくいきません

また、スクリプトにはご説明が必要です。→【スクリプトを見てください
引用:
mikataさんは書きました:
SectionArrayの要素には
SectionArray[0]="1010001,20120309";
SectionArray[1]="1010002,20120309";
SectionArray[2]="1010003,20120309";

...[中略]...
としてみましたが、思った結果が得られない状態ですのでお手数おかけいたしますがご教授お願いいたします。

環境はMacOS:10.6 Flash:CS3  actionscript:2.0となっております。
どうぞよろしくお願いいたします。


----------------
 

mikata
Åê¹ÆNo.48890
投稿日時: 2012-3-10 18:47
新米
居住地:
投稿: 9
使用環境:
MAC OS 10.4
Flash CS3
Re: 配列の要素を異なる配列を参照して並び替えたい
ご返信どうもありがとうございました。
NGワードを連発してしまってお手数おかけいたしました。

場所コードの小さい順で表示されているタイムテーブルを任意順で表示変更させたいので、場所コードと日付のデータの入っているSectionArrayの要素をソートして任意順に並べ替えようとしています。

//場所コードの小さい順で並んでいるSectionArrayの要素
SectionArray[0]=1010001,20120309;//場所コード,日付のデータ
SectionArray[1]=1010002,20120309;
SectionArray[2]=1010003,20120309;
SectionArray[3]=1010004,20120309;
SectionArray[4]=1010005,20120309;
SectionArray[5]=1010006,20120309;
SectionArray[6]=1010007,20120309;
SectionArray[7]=1017001,20120309;
SectionArray[8]=1017002,20120309;
SectionArray[9]=1017003,20120309;

SectionArray.sort(turnOrder);で比較関数を呼び出し、get_tern();関数でTurnの要素順と部屋コードが一致したら、一致した位置bFindを返し、
room1とroom2を比較させてSectionArrayの順を以下のように変更させようとしています。

//Tern要素を参照して並びを変更したSectionArrayの要素
SectionArray[0]=1010001,20120309;//場所コード,日付のデータ
SectionArray[1]=1010002,20120309;
SectionArray[2]=1010005,20120309;
SectionArray[3]=1010006,20120309;
SectionArray[4]=1010007,20120309;
SectionArray[5]=1010003,20120309;
SectionArray[6]=1010004,20120309;
SectionArray[7]=1017001,20120309;
SectionArray[8]=1017002,20120309;
SectionArray[9]=1017003,20120309;

投稿したスクリプトでは部屋コードの小さい順のままの表示順となり、どこに問題があるのか教えていただけると助かります。
ひろゆき
Åê¹ÆNo.48891
投稿日時: 2012-3-10 20:15
ちょんまげら
居住地: 東京砂漠
投稿: 4403
使用環境:
10.8.5

Flash Professional CS4/CS6/CC

Safari 6.1
Re: 配列の要素を異なる配列を参照して並び替えたい
野中さんの回答をもう一度よく目を凝らしてご覧になっては?

SectionArray[0]=1010001,20120309;

この「1010001,20120309」は、文字列ですか?配列ですか?何ですか?


----------------
質問する際は、回答者に具体的な情報を与えてください。

mikata
Åê¹ÆNo.48892
投稿日時: 2012-3-11 0:02
新米
居住地:
投稿: 9
使用環境:
MAC OS 10.4
Flash CS3
Re: 配列の要素を異なる配列を参照して並び替えたい
ご指摘ありがとうございました。
的を得ていない返信でご迷惑をおかけしております。
今回も自身がないのですが、補足説明させていただきます。
SectionArrayは外部テキストから読み込んだ変数データを "|" で切り分けた配列になります。
その場合、SectionArrayの要素は文字列となって
SectionArray[0]="1010001,20120309";

という事であっているでしょうか?

よろしくお願いいたします。
ひろゆき
Åê¹ÆNo.48893
投稿日時: 2012-3-11 0:32
ちょんまげら
居住地: 東京砂漠
投稿: 4403
使用環境:
10.8.5

Flash Professional CS4/CS6/CC

Safari 6.1
Re: 配列の要素を異なる配列を参照して並び替えたい
自信がないのであれば、
きちんと調べ直された方がよいのではないでしょうか?

取ることができる方法は2つあると思います。

(1) 外部テキストをやめて、内部に仮のデータを作って、確認する。

(2) 外部テキストのなかみ、外部テキストを読み込む部分のスクリプトも含め、
 妙な省略をしない。肝心の部分をはっきりさせないで「だと思います」と言われても…。
 スクリプトがたくさんあるのであれば、動作を確認するのに必要最低限のスクリプトに絞り、
 そのスクリプトを提示して、確認してもらう。


----------------
質問する際は、回答者に具体的な情報を与えてください。

mikata
Åê¹ÆNo.48894
投稿日時: 2012-3-11 1:04
新米
居住地:
投稿: 9
使用環境:
MAC OS 10.4
Flash CS3
Re: 配列の要素を異なる配列を参照して並び替えたい
度々どうもありがとうございます。
返信内容が的を得ているか自身がなかったもので申し訳ございません。

(1)(2)の方法で確認してみます。
スクリプトがたくさんあるのでスクリプトを絞って確認してから、再度投稿させていただきますのでよろしくお願いいたします。
mikata
Åê¹ÆNo.48895
投稿日時: 2012-3-11 3:35
新米
居住地:
投稿: 9
使用環境:
MAC OS 10.4
Flash CS3
Re: 配列の要素を異なる配列を参照して並び替えたい
アドバイスいただいてありがとうございます。
ひろゆきさんに教えていただいた方法で動作確認を行いました。

スクリプトを絞り込みすっきりさせたおかげで、どこに問題があったのかが判明しました。
get_tern()関数内の返り値を格納する変数名の指定ミスでした。bFindをnFindに訂正しましたら、任意順に並び替える事ができました。

function get_tern(p_num) {
    Turn = [1010001, 1010002, 1010005, 1010006, 1010007, 1010003, 1010004, 1017001, 1017002, 1017003];
	var thelength = Turn.length;
	var nFind = -1;
	for (i=0; i<thelength; i++) {
		if (Turn[i] == p_num) {
			nFind = i;
			break;
		}
	}
	return nFind; //返り値格納変数
}

こちらの初歩的な確認ミスでひろゆきさんと野中さんに貴重なお時間をとらせてしまい、大変申し訳ございませんでした。

今後投稿させていただく場合は、必要なスクリプトだけで動作確認を行い今回アドバイスしていただいた点に気をつけて投稿させていただきますので、またよろしくお願いいたします。
どうもありがとうございました。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ

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