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

パスワード:


パスワード紛失

新規登録
メインメニュー
メイン
   ActionScript 3.0 特設会議室
     配列に格納されている型を判定に使う方法
投稿するにはまず登録を

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
Åê¹ÆNo.45225
投稿日時: 2010-6-22 8:34
半人前
居住地: 主に福岡へ出没
投稿: 45
使用環境:
【Win7:FlashCS5:AS3.0】
エディター:FlashDevelop
配列に格納されている型を判定に使う方法
もっと良いやり方があるのではないかと思って投稿します。

■やりたい事
1.配列Aに格納されている要素の型がArrayかそうでないかを調べる
2.調べた結果をもとにif文にて処理を分岐させる

一応下記で動作はするのですが、ほかに何か良い案があれば教えていただけないでしょうか。

var tes_array1:Array=[1,2,3,4];
var tes_array2:Array=["a","b","c","d"];
var tes_main_array:Array=[tes_array1,tes_array2,"testes",18];

for (var i:Number=0; i<tes_main_array.length; i++) {

	var _value:String=tes_main_array[i].constructor.toString()

	if (_value=="[class Array]") {
		trace("配列!");
	} else {
		trace("配列じゃないよ");
	}

}
宇都宮正宗
Åê¹ÆNo.45226
投稿日時: 2010-6-22 9:34
新米
居住地:
投稿: 25
使用環境:
:Flash:5
6.0
2004
:Flash:8
:Flash:CS3
:Flash:CS4
:Flash:CS5
:Flash:CS6
:FlashCC
:FlashBuilder
:FlashDevelop
pro
:Win:Vista
:Win:7
:MacOS:X
Re: 配列に格納されている型を判定に使う方法
こんにちは。
constructorから判断するのも面白いですね!
僕はいつもは型のチェックはtypeofでやってるんですが、配列で試してみると"object"が返ってきたんで、かわりにis演算子使ってみました。
var tes_array1:Array=[1,2,3,4];
var tes_array2:Array=["a","b","c","d"];
var tes_main_array:Array=[tes_array1,tes_array2,"testes",18];

for (var i:Number=0; i<tes_main_array.length; i++) {
	//trace(typeof tes_main_array[i]);
	if (tes_main_array[i] is Array) {
		trace("配列!");
	} else {
		trace("配列じゃないよ");
	}
}
Åê¹ÆNo.45227
投稿日時: 2010-6-22 10:27
半人前
居住地: 主に福岡へ出没
投稿: 45
使用環境:
【Win7:FlashCS5:AS3.0】
エディター:FlashDevelop
Re: 配列に格納されている型を判定に使う方法
早速ありがとうございます!
そうなんですよ、typeofだとObjectになるのでどうしたものかと。
is演算子って手がありましたね!
その方が処理が速くていい感じです。

"constructor"だと3035
"is"だと123

という結果になりました(以下比較に使ったコード)

var count:int=1000000;
var time:Number;
/*--------------------------------------------------------*/
time = new Date().getTime();
for (var t:uint=0; t < count; t++) {
	//var _value:String=tes_main_array[1].constructor.toString();
	var _value:Boolean=tes_main_array[1] is Array;
}
trace(new Date().getTime() - time);

やはり、Stringの処理は時間がかかりますねー。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ

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