复杂数据作为可选的javascript函数参数

时间:2013-11-20 12:57:23

标签: javascript jquery function parameters

我想编写一个可以接受可变数量参数的javascript函数,这些参数应该是具有结构的东西。 让我们举个例子:

该函数将在页面内部注入一些HTML,并且必须对传递给函数的每个元素重复此HTML

让我们假设:

element1 = {name:"john",image:"/john.jpg"}
element2 = {name:"jack",image:"/jack01.jpg"}
element3 = {name:"Linda",image:"/001.jpg"}

option1 = [element1,element2]
option2 = [element1,element2,element3]

function injectPeople (opt){
  i=0
  foreach opt {
    inject opt[i].name;
    injectelsewhere opt[i].image
  i++
}

}

我想将此功能称为:

injectPeople (option1);

injectPeople (option2);

或者

injectPeople ();

不会注入任何东西。

有没有一种干净的方法来实现这一目标?对象和数组是最好的方法吗?

PS:标题有点奇怪,但我没有找到更好的描述方法,随意编辑它以使问题更清晰。

2 个答案:

答案 0 :(得分:1)

这是你需要的吗?

var elements = [{name:"john",image:"/john.jpg" },   
                {name:"jack",image:"/jack01.jpg"},
                {name:"Linda",image:"/001.jpg"}],
    option1 = elements.slice(1, elements.length),
    option2 = elements;

function injectPeople (opts){

    if(!opts) throw new ReferenceError('opts not defined');

    $.each(opts, function(i, v){
        //do inject stuff
        console.log(v.name, v.image);
    });    
}

injectPeople(option1);

http://jsfiddle.net/sWB64/

答案 1 :(得分:1)

在较新的浏览器中,您只需使用Array.prototype.forEach()

即可
option1.forEach(function (a){
    injectPeople(a);
})