2016-11-14 87 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

即使你正在建立一個C#應用程序,如果你的問題ISN與C#無關,標記它沒有任何好處。 – Jonesopolis

回答

4

foo是一個函數,它返回一個不是數組的對象。所以沒有任何push方法。如果你想增加新的屬性添加到對象foo回報,你可以這樣做如下:

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

或使用點符號作爲

obj.cde = "value3"; 

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

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

 
console.log(obj);

1

爲什麼不要試試如下:

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

任何他們無法做'x.newProp = 33'的原因? – musicnothing

+0

@musicnothing是的,這也是可能的。 –

0

您可以使用rest parameterspread elementObject.assign()返回a如果沒有參數傳遞,否則設置傳遞參數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);