2017-03-10 17 views
0

条件に基づいて関数に渡される引数がいくつかあります。条件付き値を持つオブジェクト

引数はオブジェクトです。

だから、私はブーリアンでこれをやろうとしています。それが真であれば、何も追加しない場合は引数を追加します。

theFunction(arg1, addArg2 && arg2, addArg3 && arg3); 

これは機能しません。 これを達成する方法は何ですか? 最初にリストを作成する必要がありますが、これを行う方法がわかりません。

EDIT ---

私は次のように必要な 引数は、できるだけ多くの引数を取ることができ、ライブラリ使用しています:

const style1 = props => ({ 
    borderRadius: "0%", 
}); 

const style2 = props => ({ 
    width: "10px", 
}); 

theFunction(style1, style2); 

私は値に基づいてtheFunctionにそれらを渡したいが。私にとって、ブール値でこれを行うのは良い解決策だと思われます。 だから、時々私は、私は他の提案を開いています

theFunction(style1); 

、時には

theFunction(style1, style2); 

を呼び出します。引数手段として

+0

入力用のデータと必要な出力を追加してください。 –

+1

本当の[mcve]が必要です。変数にはどのような値がありますか? 'theFunction'が受け取る値はどれくらいですか? – Quentin

+0

私はOPの質問がよく述べられていると思います。彼は、 'addArg'がfalseなら' nothing '(おそらく 'undefined'や' false')を渡したいと思います。もし 'addArg'がtrueなら' arg'を渡します。この質問を閉じる必要はありません。 –

答えて

0

のようにuは関数内で好きnullに値をデフォルトまたはE/wをすることができますあなたのライブラリ関数は、おそらく代わりに、オブジェクトのfalseを渡すかを理解しません。残念ながら、関数の引数リストにその関数が現れないようにする関数に渡すことができる「何もない」値はありません。

しかし、必要に応じて反復可能な引数リストを作成し、spread operatorを使用してライブラリ関数に渡すことができます。私はあなたが何をしようとして理解だと思う

function f(...args) { 
 
    console.log('Got', args); 
 
} 
 

 
var addArg2 = false, addArg3 = true; 
 
var arg1 = 1, arg2 = 2, arg3 = 3; 
 

 
// Not working: 
 
f(arg1, addArg2 && arg2, addArg3 && arg3); 
 

 
// Working: 
 
var args = [arg1]; 
 
if (addArg2) args.push(arg2); 
 
if (addArg3) args.push(arg3); 
 
f(...args);

+0

これは私が望むようには機能しません。私は通過する機能を制御しません。たぶんそれはこのケースを扱うことができないでしょうか? – Franck

+0

@Franckあなたの編集後に私の答えを更新しました。 –

+0

それは私が私の場合に必要なものです、それは賢いです。ありがとう! – Franck

0

例は、fと仮定すると、あなたのライブラリ関数です。もちろん

// You can use the spread operator in the declaration to make 'arguments' an array 
function theFunction(...args) { 
    let obj = {}; 
    args.forEach((item) => { 
     // Using Object.entries() loop for the sake of legibility 
     for(let [key, value] of Object.entries(item)) { 
      // For every object you pass in, assign to object to return 
      obj[key] = value; 
     } 
    } 
    return obj; 
} 

あなただけ一緒にすべてのこれらのオブジェクトをマージしている場合、あなたはObject.assign

function theFunction(...args) { 
    let obj = {}; 
    args.forEach((item) => { 
     Object.assign(obj, item); 
    } 
    return obj; 
} 

More info on Object.assign() at MDN

幸運を使用することができます!これが助けてくれるといいですね。

+0

le_m答えは私が探していたものでした。興味深い答えが、それは私に何ができるかについてのアイデアを与える。ありがとう! – Franck

関連する問題