将对象中的对象作为参数传递给Funciton

Passing in Objects within an Object as Arguments to a Funciton

本文关键字:对象 参数传递 Funciton      更新时间:2023-09-26

我被一个看似简单的问题难住了。我目前有一个Object,里面有多个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);

非常感谢您的帮助。

提前感谢!

multipleArguments.apply(this,Object.keys(objectofObjects).map(function(key){return objectofObjects[key]}))

传递对象的对象。。。

multipleArguments(objectofObjects);

在你的功能上,处理里面的物体。

function multipleArguments(objcs) {
    for (var o in objcs){
        // do your stuff here
    }
}

如果您需要作为另一个对象的成员可访问的对象,则需要通过迭代其键来构建包含对象的数组。像这样:

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调用。

我想我会把对象放在一个数组中,然后用对象数组的每个索引作为函数的参数来调用函数。

for(int i = 0; i < objectsArray.length; i++) {
     myFunction(objectsArray[i]);
}