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

时间:2016-07-03 16:13:33

标签: javascript

我有一个对象

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

我希望有一种方法可以让一个人一次输入多个键和值对。

现在我有这个:

for (var i = 0; i < generatedArray.length; i++){
  $('#C' + generatedArray[i]).animate({opacity: 0.1},500).animate({opacity: 1}, 100);
}

这是对的吗?

2 个答案:

答案 0 :(得分:1)

你几乎把它弄好了:只需改变循环就可以将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);

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

答案 1 :(得分:0)

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

更正版本:

   /**
 * 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;
}