3

配列を初期化することなく、この種の関数を記述するよりエレガントな方法はありますか?

function getStuff () {
    var some_array= [];

    $("#some-id ul li span.key").each(function() {
          some_array.push($(this).text());
    });

    return some_array;
}
4

2 に答える 2

9

jQuery.map

function getStuff () {
    return $.map($("#some-id ul li span.key"), function(el) {
          return $(el).text();
    });
}

フィドル

パフォーマンスに関しては、違いは最小限です。また、Lix が指摘したように、より読みやすく保守しやすい方法を選択してください。最終的に、どちらも配列を作成し、要素を反復処理し、文字列値を配列にプッシュして、配列を返します。

于 2012-12-11T17:19:59.833 に答える
5

これを行うためのもう1つのより機能的な方法は次のとおりです。

「メソッド」関数を定義します。

var method = function (method) {
    return function (item) {
        return $(item)[method]();
    };
};

次のように使用できます。

var text = method('text');
var html = method('html');
var fadeIn = method('fadeIn');

getStuff関数を作り直すには:

var getText = function (arr) {
    return $.map(arr, text);
};

$.mapから返された関数を適用して、渡された配列を反復処理します。var text = method('text')これは、 の実行です$(array item).method()

これらの種類のテクニックを使用する方法を示すために、これをまとめただけです。おそらく別の名前を付けて、「メソッド」関数をアプリ全体で使用するためのカスタム ライブラリ/ヘルパーとして定義するでしょう。

于 2012-12-11T17:39:58.247 に答える