2012-01-10 16 views
1

javascriptのreturn文で複数の値を返すことはできません。これらの値をjsオブジェクトにラップすると便利でしょうか?または他の解決策?あなたは関数に複数の値を渡ししようとしているようjs - 複数の値を渡して再呼び出し

function buildSomething() 


    var t = []; 
    var x = []; 
    var y = []; 
    var h = []; 

    var myValues = fnGetData(t,y,x,h); 



function fnGetData(t,y,x,h) 
{ 

// do something 
// return t,y,x,h 

} 
+0

? 'return [t、y、x、h]' –

答えて

1

あなたのコードをよく見ると、それが見えます。このためにオブジェクトを使用するのは、JavaScriptの共通のイディオムです。

var values = { 
    t: t, 
    x: x, 
    y: y, 
    h: h 
}; 

はまた、それが簡単にあなたがjQueryのかどうかを使用している場合、私はわからないんだけど、一般的なjQueryのイディオムは、同様に、このためにそこのデフォルトのデータに

function fnGetData(data) { 
    data.t = data.t || []; 
    data.x = data.x || ["default", "values"]; 
} 

を扱うようになります

function fnGetData(data) { 
    $.extend(data, { 
     t: [], 
     x: ["intial", "values"] 
    }); 
} 
+0

これをmyValues.t [n]として参照しますか? –

+0

@MustaphaGeorge - YEP –

0

あなたが持っている選択肢は、オブジェクトをより論理的な選択肢とする配列またはオブジェクトとして返すことです。より良いコードになる名前をプロパティに明示できるためです。オブジェクトを使用して

1

は、おそらくあなたの最善の策である:

function getData(t, y, x, h) { 
    // ... 
    return { 
     t: t, 
     x: x, 
     y: y, 
     h: h 
    }; 
} 

次にあなたが名前によって返されたオブジェクトの任意の値にアクセスすることができます。

0

他の人が提案しているように、関数からオブジェクトを返すことは非常に一般的です。私はおそらくそのルートを行くだろう。また、オブジェクトは対処しやすく、グローバルスコープを汚染する可能性は低いです。

別のオプションとして、例のような関数を呼び出す必要がある場合は、配列を返すことです。 Function.applyを使用して戻り値を持つ関数を呼び出す必要がある場合、配列を返すと便利です。 Function.applyは配列をとり、関数のパラメータに変換します。例えば

:値の配列を返す

someFunc.apply(this, [t,x,y,h]); 
関連する問題