1

すべての要素の var "source" 値を返したいのですが、各関数から "source" を出すと undefined になります。ソース配列全体を返したいです。どうやってするか?どんな助けでも本当に感謝します-

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

各要素のプロパティを含む配列を実際に求めていると仮定します。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コンボの非常に良い代替品です。これは、「マップ」関数が配列を取り、各要素を変換し、それらの変換結果の新しい配列を返す関数型言語から来ています。

適切な配列ではなく、配列のような結果が返される.getことを気にしない場合、finalは厳密には必要ありません。

于 2013-07-11T19:54:43.567 に答える
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 に答える
0

sourceあなたがそこにいたeachので、関数内でのみ定義されています。var

代わりにこれを試してください:

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