如何从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;i foo[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]]周围的[];或者最终指定一个元素数组