如何在我的函数参数中创建一个对象数组,为每个对象调用一个函数?

时间:2014-06-15 16:20:44

标签: javascript

我创建了以下checkGrid函数,它接受了一个计数,然后是另外两个参数。它是一个在selectOption调用中硬编码的解决方案,并且不是很灵活:

checkGrid = function(expectCount, typeParam, selectParam) {

   it('Check', function () {
      selectOption('examTypeSelect', typeParam).click();
      selectOption('examStatusSelect', selectParam).click();
    });

}
checkGrid(10, '*', '*');

现在我想使它更灵活,以便它接受任意数量的selectOption函数的参数。所以我想的是我可以这样称呼的东西。我需要的是checkGrid函数调用selectOption三次:

checkGrid(10, [{'examTypeSelect','*'}
               {'examStatusSelect', '*'},
               {'abcSelect','29'}]);

我怎样才能获取一个数组对象,该对象是checkGrid的第二个参数,并使其成为调用任意数量的 selectOption函数取决于数组中有多少元素?

1 个答案:

答案 0 :(得分:2)

在数组上使用循环,.apply使用可变数量的参数调用每个函数。

checkGrid = function(expectCount, stuff) {
    it('Check', function () {
        for (var i = 0; i < stuff.length; ++i) {
            selectOption.apply(this, stuff[i]).click();
        }
    });
}

你不会用你提出的语法(这是无效的)来调用它,但是喜欢

checkGrid(10, [
                ['examTypeSelect','*'],
                ['examStatusSelect', '*'],
                ['abcSelect','29','and','perhaps','more','parameters']
              ]
          );

最后,我不清楚expectCount应该做什么,但我把它留在那里是因为你原来的代码可能会用它来