2011-08-07 21 views
0

を適切に実装するより良い方法は、ActionScript3で文字列の数が配列されており、テスト文字列が配列内にあるかどうかをテストするとします。 「in」は、AS3の配列のインデックスに対してのみ機能します(あなたが私に尋ねると完全に遅延します)。しかし、オブジェクトで動作しますが、オブジェクトについては言いません。文字列 'in'配列

誰かがこのコードを改善(削減)できますか?私はユーティリティ関数を定義することを避けることを望んでいます - 私は素晴らしいエレガントな1ライナーが欲しいです。

myArray.filter(function(item:*, i:int, a:Array) { return (item == testString); }).length 

0 == falseなので、テストで使用できます。 testStringのスコープは、包含関数で定義され、クロージャによってカプセル化されていることに注意してください。

if (allowedProfiles.filter(function(item:*, i:int, a:Array) { return (item == name); }).length){ // yay! } 
+0

あなたは500人の担当者を抱えており、質問のコードの書式を正しく設定する方法がわかりません。それについて少し考えてみましょう。 – Tomalak

+0

@Tomalak。撮影ポイント。私は急いだ。 –

答えて

2

(見つからない)、配列内の文字列のインデックスが-1ではないことを確認するためにArray.indexOf()メソッドを使用します。

var myArray:Array = ["hello", "world"]; 
trace(myArray.indexOf("hello")); // == 0; 
trace(myArray.indexOf("goodbye")); // == -1 
+0

もちろん。私はお尻です。ありがとう! –

1

理由だけではなく、indexOf()を使わないのでしょうか?

if(myArray.indexOf("testString") != -1) { // it's in there