如何从JavaScript中的函数向对象添加多个键和值?

如何从JavaScript中的函数向对象添加多个键和值?,javascript,Javascript,我有一个目标 var foo = { "prop1" : "value2", "prop2" : "value3", "prop3" : "value4" }; 我希望能有一个函数,允许一次输入多个键和值对 现在我有这个: function propAndValAdder(){ for (var i = 0; i < arguments.length; i++) { foo[arguments[i]] = [arguments[i + 1]

我有一个目标

var foo = {
    "prop1" : "value2",
    "prop2" : "value3",
    "prop3" : "value4"
};
我希望能有一个函数,允许一次输入多个键和值对

现在我有这个:

function propAndValAdder(){
    for (var i = 0; i < arguments.length; i++) {
        foo[arguments[i]] = [arguments[i + 1]];
    }
}
函数propAndValAdder(){
for(var i=0;i

是这样吗?

您应该在参数中传递信息并修复循环

更正版本:

   /**
 * Add properties and values to the object
 * @param  {array} arguments An array where even are keys and odd are the values
 * @param  {object} obj       [null] The object to add properties
 * @return {obj}           Return the object but not nessary since it's an object(references)
 */
function propAndValAdder(arguments,obj) {
    if (!obj) obj = {};
    if (arguments.join) //We valid this is an array
        for (var i = 0; i < arguments.length; i += 2)
        obj[arguments[i]] = arguments[i + 1];
    return obj;
}
/**
*向对象添加属性和值
*@param{array}参数一个数组,其中偶数是键,奇数是值
*@param{object}obj[null]要添加属性的对象
*@return{obj}返回对象,但不是必需的,因为它是一个对象(引用)
*/
函数PROPANDVALADER(参数,obj){
如果(!obj)obj={};
if(arguments.join)//这是一个数组
对于(变量i=0;i
您几乎做对了:只需更改循环,将2添加到“i”(这样您就不会将值作为另一个属性添加,必须跳过它)并去掉赋值行中值周围的[](这使值成为我们不想要的数组)

更正代码:

var foo = {
    "prop1" : "value2",
    "prop2" : "value3",
    "prop3" : "value4"
};

function propAndValAdder(){
    for (var i = 0; i < arguments.length; i+=2) {
        foo[arguments[i]] = arguments[i + 1];
    }
}

propAndValAdder("prop4","value5","prop5","value6");
console.log(foo);
var foo={
“prop1”:“value2”,
“prop2”:“value3”,
“prop3”:“value4”
};
函数propAndValAdder(){
对于(变量i=0;ifoo[arguments[i]]=参数[i+1];
}
}
propAndValAdder(“prop4”、“value5”、“prop5”、“value6”);
console.log(foo);

//对象{prop1:“value2”,prop2:“value3”,prop3:“value4”,prop4:“value4”,prop5:“value6”}

foo[arguments[i]=[arguments[++i]]foo[参数[i]]=参数[++i];(去掉一组[])我想我会在概念上颠倒签名。可能更像foo(obj/*,args*/),然后在主体中使用类似于函数var args=array的函数捕获附加参数数组。从(arguments)。切片(1)必须删除[arguments[i+1]]周围的[];或者最终指定一个元素数组