传入对象中的对象作为函数的参数

时间:2014-11-05 01:31:21

标签: javascript javascript-objects

我对一个看似简单的问题感到非常难过。我目前有一个包含多个对象的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);

非常感谢任何帮助。

提前致谢!

4 个答案:

答案 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]);
}