2016-11-14 2 views
2

javascriptの関数にパラメータを追加しようとしていますが、何とかしていません。javascriptの配列に変数を追加する

私に教えてください。どのように追加できますか?私はのような機能を持っている

:今

var foo = function() { 
     var a = { 
      "abc":"value1" 
      "bcd":"value2" 
     } 
     return a; 
    }; 

、私はこれを実行します。

alert(data: [foo()]) // Actually I keep it in my function and **it works** 

を私は値で、 "ABCD" と "BCD" を参照してくださいすることができます。

しかし、今私は私が

ことを行うことができますどのように、(ダイナミックである)以上の変数を追加したい私はこれ試してみてください。私は、この配列に多くの変数を追加することができますどのように

data:[foo() + {"cde":"value3"}] //doesnt work 
data:[foo().push ({"cde"="value3"})] //doesnt work 

+0

へのパラメータあなたの質問ISN場合は、C#アプリケーションを作成している場合でも、 C#に関連していても、それにタグを付けることにメリットはありません。 – Jonesopolis

答えて

4

fooは、配列ではなくオブジェクトを返す関数です。したがって、pushメソッドはありません。

obj.cde = "value3"; 

var foo = function() { 
 
    var a = { 
 
     "abc":"value1", 
 
     "bcd":"value2" 
 
    } 
 
    return a; 
 
}; 
 

 
var obj = foo(); 
 
obj["cde"] = "value3"; 
 

 
console.log(obj);

1

なぜとして

// keep a reference to the object that foo returns 
var obj = foo(); 
obj["cde"] = "value3"; 

またはドット表記を使用して:あなたはfooリターンはあなたが以下のようにそうすることができることをオブジェクトに新しいプロパティを追加したい場合以下のように試してください:

var x = foo(); 
x["newProp"] = 33; 
+0

「x.newProp = 33'」できなかった理由はありますか? – musicnothing

+0

@musicnothingはい、それも可能です。 –

0

あなたは何のパラメータが渡されない場合aを返すようにrest parameterspread elementObject.assign()を使用することができ、他のセットが渡さaオブジェクト

var foo = function foo(...props) { 
 
    var a = { 
 
    "abc": "value1", 
 
    "bcd": "value2" 
 
    } 
 
    // if no parameters passed return `a` 
 
    if (!props.length) return a; 
 
    // else set passed property at `a` object 
 
    return Object.assign(a, ...props); 
 
}; 
 

 
var a = foo(); 
 
var b = foo({"cde":"value3"}); 
 
console.log(a, b);

関連する問題