我有一个对象
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);
}
这是对的吗?
答案 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;
}