2017-03-20 12 views
0

4つの変数を作成する必要があります。これらの変数はすべてランダムな合成数を持ちます。合成番号は関数によって作成されます。以下のスクリプトの代わりに同じ関数を使って4つの変数を作成する方が簡単ですか?jsで1行で関数出力から複数の変数を作成する方法は?

var a = create_composite(); 
var b = create_composite(); 
var c = create_composite(); 
var d = create_composite(); 
+0

を必要な数だけ変数を取ることができるようになります4つの変数を作成するよりも4つの変数を作成するための簡単な方法はありますか?それはあなたが求めていることですか? –

答えて

1

はそうでない場合は、古いブラウザでは、あなたはまだあなただけのような個別のプロパティを呼び出す必要があります、関数はオブジェクトを返すことができますあなたががのために行くされているものを...

// stub function 
 
const create_composite =() => Math.floor(Math.random() * 10) 
 

 
const [a, b, c, d] = (new Array(4)).fill(0).map(create_composite) 
 

 
console.log(a, b, c, d);

別のオプションは、変更することです私が上記したよう

const create_composites = (qty=1) => { 
    return (new Array(qty)).fill(0).map(() => { 
     // original composite number function code 
    }); 
} 

は、その後、あなたが同様の方法でこれを使用することもできます:0あなたが生成したい合成数の量を受け入れるように

const [a, b, c, d] = create_composites(4); 

私たちはあなたのcreate_compositeを変更するための提案にありますがこの関数は、私は考えることができる最高オプションはgeneratorにその機能を有効にすることです:

function* create_composite() { 
 
    while(true) 
 
    // yield your return value here 
 
    yield Math.floor(Math.random() * 10); 
 
} 
 
    
 
const [a, b, c, d, e, f, g] = create_composite(); 
 
console.log(a, b, c, d, e, f, g);

これは、あなたが

+0

他のスクリプトでいくつかのコンポジットを宣言しなければならないかもしれないので、これは有益です。おかげで – Ansjovis86

+0

素晴らしい! @ Ansjovis86を助けてうれしい –

0

私はこれがイージーの方法だと思います。あなたはまた、それをそのように行うことができます。

var a = create_composite(), 
b = create_composite(), 
c = create_composite(), 
d = create_composite(); 

をこれは好みに依存していますが、ES6をサポートするブラウザにいる場合はJavaScriptで簡単な方法:)

+0

ええ、ええ、私はvarを3回書いてくれます。しかし、私はもっと短い方法を望んでいます。 – Ansjovis86

+0

実際に4つ以上の変数がある場合は、どのループでも実行できます。あなたの関数が各呼び出しの後に異なる値を返す場合、4つの差分変数を宣言する簡単な方法はありません。 –

0

がない、またはバベルを使用しているかであります同様に、あなたがこれを行うことができます:

var { a, b, c, d } = create_composite(); 

をcreate_compositeキー、B、C、Dを持つオブジェクトを返す場合は、それらの個々の変数にアクセスすることができます。これは、それはだかどうかわからない少し短い

var compositeNumber = create_composite(); 
console.log(compositeNumber.a); 
関連する問題