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

パスワード:


パスワード紛失

新規登録
メインメニュー
メイン
   コーダーズルーム【スクリプト系】
     配列のインデックス(キー)と値のリストアップ
投稿するにはまず登録を

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
かずぃ
Åê¹ÆNo.4473
投稿日時: 2004-3-3 13:08
半人前
居住地:
投稿: 49
使用環境:
98SE 10.3 MX
配列のインデックス(キー)と値のリストアップ
配列内のデータをListBox等の項目に以下のような形式で追加したく思いスクリプトに悩んでいます。

//配列
myArray[0] = "zero";
myArray[1] = "first";
myArray[F] = "エフ";
 
 
//リストボックスへの追加
myListBox.addItem("0: zero", "0");
myListBox.addItem("1: first", "1");
myListBox.addItem("F: エフ", "F");


まず、手順としては配列myArrayよりインデックスと値を取り出し、変数等に代入してからListBox.addItemを実行することになると思います。

このとき、配列からインデックスと値の取り出し方法の見当がつきません。ActionScriptだけではできないのかも・・・

ちなみに今回、配列のインデックスに規則性はほとんどないです。敢えてあげるとすれば、2桁の英数字で英字は大文字ぐらいです

何かいいスクリプトはないでしょうか?
nao
Åê¹ÆNo.4477
投稿日時: 2004-3-3 13:43
職人
居住地:
投稿: 208
使用環境:
WinXP Pro
Flash8 Professional
Re: 配列のインデックス(キー)と値のリストアップ
ListBox等は使ったことないのですが
for in 文を使って

myArray = new Object();
myArray[0] = "zero";
myArray[1] = "first";
myArray[2] = "エフ";

for (var i in myArray) {
	trace(i + " : " + myArray[it]);
	myListBox.addItem(i + ": " + myArray[it], i);
}

でうまくいきませんか?
ObjectをつかったけどArrayでもいいと思います.


----------------
nao [seto@graffiti-web.org]

野中文雄
Åê¹ÆNo.4478
投稿日時: 2004-3-3 13:43
ちょんまげら
居住地: 東京
投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1)
Re: 配列のインデックス(キー)と値のリストアップ
整数インデックスを使わなくなった時点で、性格的には配列というよりObject扱いになりますね。Fは変数とみなされるので、未定義ならundefinedになります。
引用:
shinkazyさんは書きました:
配列内のデータをListBox等の項目に以下のような形式で追加したく思いスクリプトに悩んでいます。

//配列
myArray[0] = "zero";
myArray[1] = "first";
myArray[F] = "エフ";  // Fが未定義変数ならNG

要は、myArrayに予め値を格納したうえで、以下の処理をmyArrayを使って行えばよいということでしょうか?
//リストボックスへの追加
myListBox.addItem("0: zero", "0");
myListBox.addItem("1: first", "1");
myListBox.addItem("F: エフ", "F");

//配列 
myArray = new Array();
myArray.push([0, "zero"]);
myArray.push([1, "first"]);
myArray.push(["F", "エフ"]);
//リストボックスへの追加 
for (var i = 0; i<myArray.length; ++i) {
	var _str = String(myArray[it][0]);
	myListBox.addItem(_str+":"+myArray[it][1], _str);
}


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

野中文雄
Åê¹ÆNo.4479
投稿日時: 2004-3-3 14:01
ちょんまげら
居住地: 東京
投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1)
Re: 配列のインデックス(キー)と値のリストアップ
Object(あるいは整数インデックス以外のプロパティも設定した配列)からプロパティ値を取出す方法は、s-n1211さんのいわれるとおりfor..inアクションを使用することです。

ただし、for..inアクションでプロパティが取出される順序には注意が必要です。ActionScriptでは、オブジェクトインスタンスに対してプロパティを設定した順序の、最後から逆順に取出されます。JavaScriptでは、正順です。

この順序は、仕様に定められていないので、実装によって(たとえば将来のFlash Playerで)変わる可能性があります。ですから、順序を決めておきたい場合には、別途の考慮が必要です。先の私のスクリプトでは、そのために多重配列を用いました。
引用:
s-n1211さんは書きました:
for in 文を使って

myArray = new Object();
myArray[0] = "zero";
myArray[1] = "first";
myArray[2] = "エフ";

for (var i in myArray) {
	trace(i + " : " + myArray[it]);
	myListBox.addItem(i + ": " + myArray[it], i);
}


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

かずぃ
Åê¹ÆNo.4482
投稿日時: 2004-3-3 14:44
半人前
居住地:
投稿: 49
使用環境:
98SE 10.3 MX
Re: 配列のインデックス(キー)と値のリストアップ
s-n1211さん、Fumioさん返信ありがとうございます。
いつもいつも参考にさせていただいています。

整数インデックス以外が使われている場合は、配列の構造に少し手を加えないとうまく値の取出しができないということですね。
また、for...inで順番が逆になるのは盲点ですね。


ちなみに他言語(PHP)ですが、こんな感じで配列(オブジェクト)のインデックスと値の組を取り出せたりします。自分は結構便利に使っています。まあ、他言語の話をここでしてもしょうがないですが、参考までに・・・
actionscriptでも手軽にインデックスにアクセスしたいです。
//配列
$myArray[0] = "zero";
$myArray[1] = "first";
$myArray[F] = "エフ";
 
foreach( $myArray as $key => $value){
 echo $key.": ".$value."\n";
}
//出力
0: zero
1: first
F: エフ
youich
Åê¹ÆNo.4486
投稿日時: 2004-3-3 15:20
職人
居住地: kobe
投稿: 349
使用環境:
Tiger
Re: 配列のインデックス(キー)と値のリストアップ
引用:

ちなみに他言語(PHP)ですが、こんな感じで配列(オブジェクト)のインデックスと値の組を取り出せたりします。自分は結構便利に使っています。まあ、他言語の話をここでしてもしょうがないですが、参考までに・・・
actionscriptでも手軽にインデックスにアクセスしたいです。
//配列
$myArray[0] = "zero";
$myArray[1] = "first";
$myArray[F] = "エフ";
 
foreach( $myArray as $key => $value){
 echo $key.": ".$value."?n";
}
//出力
0: zero
1: first
F: エフ

え?と、添字を文字列にするかどうかの違いだけのように思いますよ。
それにPHPでもFのような添字に未定義の物を使うのはよくないんじゃないですか?

myArray = [];
myArray[0] = "zero"; 
myArray[1] = "first"; 
myArray['F'] = "エフ"; 

for(var key in myArray){
	trace(key + ":  " + myArray[key]);
}


----------------
- yo

かずぃ
Åê¹ÆNo.4493
投稿日時: 2004-3-3 16:11
半人前
居住地:
投稿: 49
使用環境:
98SE 10.3 MX
Re: 配列のインデックス(キー)と値のリストアップ
引用:

え?と、添字を文字列にするかどうかの違いだけのように思いますよ。
それにPHPでもFのような添字に未定義の物を使うのはよくないんじゃないですか?

myArray = [];
myArray[0] = "zero"; 
myArray[1] = "first"; 
myArray['F'] = "エフ"; 

for(var key in myArray){
	trace(key + ":  " + myArray[key]);
}

あっ、クオーテーション!
これをすっ飛ばして解釈してました。
引用:
Fumioさんwrote:
整数インデックスを使わなくなった時点で、性格的には配列というよりObject扱いになりますね。Fは変数とみなされるので、未定義ならundefinedになります。


僕の最初の例示の記述の仕方がまずいんですね。_| ̄|○


ちなみにPHPは変数名の先頭に$がつくので文字列とは区別されます。また、配列のインデックスは数値以外は基本的には文字列として解釈されます。なので$array[F]$array['F']は同一です。ただし、エラーレベルの設定によっては前者は「シングルクオーテーションで囲みなさい」というエラーで怒られます。

以上、お粗末さまでした
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ

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