2016-07-11 14 views
-1

ここに私のコードです。javascriptファイルとconcat内で複​​数の変数を検索するにはどうすればよいですか?

function concatVar(data) { 
    for (var data in window) { 
     if (window[data]== data.match(data+(/\[[0-9]+\]/))) 
      return data; 
    } 
} 

var data1 = [{ x: 290, y: 160}, {x: 391, y: 160}, {x: 391, y: 160}] 
var data2 = [{x: 200, y: 160}, {x: 193, y: 160}, {x: 421, y: 260}] 
var data3 = [{x: 200, y: 160}, {x: 193, y: 160}, {x: 421, y: 260}] 

var data = data1.concat(data2, data3) 

concatVar(); 

私は、任意の変数指定されたデータ[+数字]をJavaScriptのファイルを検索して見つけることができるようにしたいと思いますし、それら連結変数1に。

私はこれを行う方法を見つけるのに苦労していますか?そして、ウィンドウ内のforループを使用することをお勧めしますか?

アドバイスはありがとうございます!あなたが使用する必要があります

歓声

+5

最初に「dataX」を使用するのはなぜですか?なぜ、配列[data [0] '、' data [1] '...などの配列*' data'? – deceze

+0

これは、変数がグローバルである場合にのみ機能します。インタプリタが厳密なモードであれば動作しません。また、変数がクロージャ内で宣言されていても動作しません。 – evolutionxbox

+0

申し訳ありませんが、サイトで変数を渡すためにウィンドウを使用する必要がある場合は、デザインが非常に悪いです。この特定のケースでは、Object.keys()ウィンドウを取得して、すべての変数名を文字列として含む文字列を配列に渡すことができます。あなたはあなたが必要とする変数であるために、あなたの正規表現でそのaarrayをループすることができます。また、for-loopの内部で戻ると、ループが終了します。 – Shilly

答えて

0

正規表現は、(あなたが提供するもののように見えるすべての変数にマッチしようとする)/var\s+data\d+\s+=\s*[\w\W]+;/ig可能性が高いです。 私は個人的にはと一致しないものをすべて置き換え、実際に割り当てられた値を別の正規表現を使用して一度に1つずつ処理するように分割してから使用してみます。oneOfThoseMatchedVariables.replace(/data\d+\s+=\s*/i, '')

oneOfThoseMatchedVariablesこれは、すべてのあなたはすでにあなたが必要なファイル全体を解析され、それがこのすべてがそれに実行するために保存されていると仮定している "var data1 = [{ x: 290, y: 160}, {x: 391, y: 160}, {x: 391, y: 160}];"

のように見える文字列でなければなりません。

関連する問題