1

我想返回所有元素的 var“源”值,现在当我将“源”从每个函数中取出时,它变得未定义。我想返回整个源数组。怎么做?任何帮助将不胜感激 -

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

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

    return source;
    alert (source);
}
4

3 回答 3

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;
}
于 2013-07-11T19:55:54.397 回答
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如果您不介意返回类似数组的结果而不是正确的数组,则final不是绝对必要的。

于 2013-07-11T19:54:43.567 回答
0

source只在each函数内部定义,因为你var在那里。

试试这个:

function _getSource() {
    return $(fpd.getProduct(true)[0].elements).map(function() {return this.parameters['source'];});
}
于 2013-07-11T19:54:27.610 回答