jQuery . grep( array, function( elementOfArray, indexInArray ) [, invert] )

jQuery API の jQuery . grep( array, function( elementOfArray, indexInArray ) [, invert] ) は、arrayに指定した配列を、function( elementOfArray, indexInArray )に指定した関数でフィルタリングする。invertにfalseを指定した場合、フィルタリング条件を満たす値を格納した配列を返す。invertにtrueを指定した場合、フィルタリング条件を満たさない値を格納した配列を返す。

引数

array

フィルタリングしたい配列。

function( elementOfArray, indexInArray )

フィルタリング条件を指定する関数。

elementOfArray

配列の項目要素。

indexInArray

配列内のインデックス。

invert

trueを指定した場合、フィルタリング条件を反転させる。

戻り値

Array

配列。

invertにfalseを指定した場合、フィルタリング条件を満たす値を格納した配列を返す。

invertにtrueを指定した場合、フィルタリング条件を満たさない値を格納した配列を返す。

記述例

array = jQuery . grep( [ 0, 1, 2 ], function( elementOfArray, indexInArray ){
    return elementOfArray > 0;
} );

arrayには、[ 1, 2 ]が格納される。

array = jQuery . grep( [ 0, 1, 2 ], function( elementOfArray, indexInArray ){
    return elementOfArray > 0;
}, true );

arrayには、[ 0 ]が格納される。

実装例(サンプル)

の点数が の生徒のデータを

実装例(サンプル)の動作について

条件を指定して、「抽出」ボタンをクリックすると、条件に合う生徒の名前と点数を表示する。

実装例(サンプル)のソースコード

JavaScript

<script type="text/javascript">
<!--
var scoreList = [
    { name: '太郎', Mathematics: 98, Science: 98, English: 66 },
    { name: '花子', Mathematics: 52, Science: 65, English: 100 },
    { name: '一郎', Mathematics: 75, Science: 77, English: 90 },
    { name: 'さくら', Mathematics: 64, Science: 79, English: 96 }
];
jQuery( function() {
    jQuery( '#jquery-sample-button' ) . click( function () {
        jQuery( '#jquery-sample-ul' ) . text( '' );
        var subject = jQuery( '#jquery-sample-subject' ) . val();
        var score = jQuery( '#jquery-sample-score' ) . val();
        var invert = jQuery( '#jquery-sample-invert' ) . val();
        extract = jQuery . grep( scoreList, function( elementOfArray, indexInArray ){
            return eval( 'elementOfArray . ' + subject ) >= score;
        }, eval( invert ) );
        jQuery . each( extract, function( key, value ){
            jQuery("#jquery-sample-ul") . append( '<li>' + value . name + ":" + eval( 'value . ' + subject ) + '点</li>' );
        } );
    } ) . click();
} );
// -->
</script>

CSS

<style>
<!--
#jquery-sample-filter {
    margin: 10px;
    padding: 10px;
    background-color: #f0f0f0;
    border: 1px solid gray;
    border-radius: 10px;
}
#jquery-sample-subject,
#jquery-sample-score,
#jquery-sample-invert {
    margin: 5px;
}
#jquery-sample-ul {
    margin: 10px 10px 10px 50px;
    color: #333333;
    list-style-type: square;
}
-->
</style>

HTML

<div id="jquery-sample">
    <p id="jquery-sample-filter">
        <select id="jquery-sample-subject">
            <option value="Mathematics" selected>数学</option>
            <option value="Science">科学</option>
            <option value="English">英語</option>
        </select>
        の点数が
        <input type="text" id="jquery-sample-score" value="70" size="10">
        点
        <select id="jquery-sample-invert">
            <option value="false" selected>以上</option>
            <option value="true">未満</option>
        </select>
        の生徒のデータを
        <button id="jquery-sample-button">抽出</button>
    </p>
    <ul id="jquery-sample-ul">
    </ul>
</div>

スポンサード リンク

カテゴリー: API, JavaScript, jQuery, Utilities タグ: パーマリンク