我对一个看似简单的问题感到非常难过。我目前有一个包含多个对象的Object。我正在尝试动态获取对象(无论数字)并将它们作为单独的参数传递给函数。我不想手动调用该函数,因为对象的数量可能因使用而异。
我在这里添加了一个代码示例(我试图简化可读性):http://jsfiddle.net/z8mtc8jk/1/
此外,代码如下:
var objectofObjects = {};
objectofObjects.obj1 = {key:"lol"},
objectofObjects.obj2 = {key:"rofl"},
objectofObjects.obj3 = {key:"lmao"};
console.log(objectofObjects);
console.log(Object.keys(objectofObjects).length + " is the number of objects inside the object");
function multipleArguments(arg1, arg2, arg3) {
console.log(Object.keys(objectofObjects));
}
//how can I add the objects within the objectofObjects as arguments to this function,
//without gaving to call it like this...
multipleArguments(objectofObjects.obj1, objectofObjects.obj2, objectofObjects.obj3);
非常感谢任何帮助。
提前致谢!
答案 0 :(得分:1)
传递对象的对象......
multipleArguments(objectofObjects);
并在您的函数上处理其中的对象。
function multipleArguments(objcs) {
for (var o in objcs){
// do your stuff here
}
}
答案 1 :(得分:1)
multipleArguments.apply(this,Object.keys(objectofObjects).map(function(key){return objectofObjects[key]}))
答案 2 :(得分:0)
如果您需要可以作为另一个对象的成员访问的对象,则需要通过迭代其键来构建包含对象的数组。像这样:
var args = [], keys = Object.keys(objectofObjects), i;
for (i = 0; i < keys.length; i++)
args.push(objectofObjects[keys[i]]);
yourFunction.apply(window, args);
否则只需将它们存储在数组中,这样您就可以arrayOfObjects
直接将其用于apply
调用。
答案 3 :(得分:0)
我想我会将对象放在一个数组中,然后使用objects数组的每个索引作为函数的参数调用该函数。
for(int i = 0; i < objectsArray.length; i++) {
myFunction(objectsArray[i]);
}