javascript函数返回问题

时间:2013-07-11 19:51:23

标签: javascript function

我想返回所有元素的var“source”值,现在当我把“source”放出每个函数时,它变得未定义。我想返回整个源数组。怎么做?任何帮助都会得到真正的赞赏 -

function _getSource(){
    var product = fpd.getProduct(true);

    $(product[0].elements).each(function(i, elem) {
        var source = elem.parameters['source'];
    })

    return source;
    alert (source);
}

3 个答案:

答案 0 :(得分:1)

假设您实际上在包含每个元素的source属性的数组之后:

function _getSource(){
    var product = fpd.getProduct(true);

    return $(product[0].elements).map(function(i, elem) {
        return elem.parameters['source'];
    }).get();    // .get() turns jQuery collection into an array
}

.map.each / push组合的非常好的替代品。它来自函数式语言,其中“map”函数只接受一个数组,转换每个元素,并返回这些转化结果的新数组。

如果您不介意获取类似的结果而不是正确的数组,那么最终的.get并非绝对必要。

答案 1 :(得分:1)

当您编写var source时,您声明了一个范围为each回调函数的新变量。在外面声明它并摆脱var所以你只是分配而不是重新声明,你可能也想建立一个数组而不仅仅是分配。像这样:

function _getSource(){
    var product = fpd.getProduct(true);
    var sources = [];

    $(product[0].elements).each(function() {
        sources.push(elem.parameters['source']);
    })

    return sources;
}

答案 2 :(得分:0)

source仅在each函数中定义,因为您var将其放在那里。

请改为尝试:

function _getSource() {
    return $(fpd.getProduct(true)[0].elements).map(function() {return this.parameters['source'];});
}