2

オブジェクトの配列を含むjsonがあります。この配列の要素に依存してページを作成します。ポイントと呼ばれるキーの重複する値がない場合は、ポイントの値を使用して配列内のこの要素を検索し、情報と説明を含むページをレンダリングします。ただし、ポイントと呼ばれるキーの値が2つ以上重複している場合は、これらの要素のリストをレンダリングします。この場合、ポイントの値を使用して配列内の要素を見つけることはできません。配列要素のインデックス番号を使用して、情報と説明を検索および構築する関数にパラメーターとして渡すことができることはわかっていますが、その方法がわかりません。配列内の要素のインデックス番号を取得するにはどうすればよいですか?

PSは必要に応じて私のコードを提供できます

私が使用しているコード

var allRewards = null;
$("#reward").live('pagecreate', function(e) {
    var request = $.ajax({
        type: "GET",
        url: "example.com/test.json"
        dataType: "json",
        error: function (data, textStatus){
      console.log( "it`s error" );
      console.log( status );
      console.log( data );},
        success: function (data, textStatus){

        console.log( "success" );
        console.log( status );
        console.log( data );
         }
        })
        request.success(function(data, textStatus){
            var lis = "";
            var arr = [];
            var iter = 0;


            allRewards = data

            $.each(data.rewards, function(key, val){
                if ($.inArray(val.points, arr) == -1)
                    {
                        lis += "<div data-points='"+ val.points +"'align=CENTER class = 'rewards-block ui-block-" + String.fromCharCode(97 + iter%3) + "'><a href ='#' class ='ui-link-inherit' onclick='showreward("+val.points+")'><img src ='./img/reward-icon.png'/><span>" + val.points + "&nbsp;pts</span></a></div>";
                        arr.push(val.points);
                        iter +=  1;
                    }
            });
            $("#rewards_table").html(lis);

        })

      });

function showreward(point)
{   
    $.mobile.changePage('show-rewards.html')
    console.log(allRewards);
    $("#showrewards").live('pagecreate', function(e) {
                var items = "";
                var arr = [];
                var counter = 0;
                var result = $.grep(allRewards.rewards, function(e){ return e.points == point; });
                        if (result.length > 1)
                {
                    $.each(result, function(key, val){
                        items += "<div style='color:white;'>" + val.title + "</div>"
                        console.log(val.title);
                    })
                }
                else if (result.length == 1)
                { 

                    // $.each(result, function(key, val){
                    //                      items += "div style='color:white;'"+ val.points + "></div>"
                    //                      console.log(val.points);
                    //                  })
                    $.each(result, function(key, val){
                        items += "<div style='background:white; padding:5px 5px 20px 5px;'><img style ='float:right; width:45%; margin-top:22px; padding: 0 0 10px 10px;' src ='" + val.main_photo_url + "'/><h3>"+ val.title + "</h3><p>" + val.description + "</p><p style='font-weight:bold; font-size:13px;'>Reedem below for " + val.points + " Zingle Points</p><table class='pagemenu' style='width:200px;'><tr><td class='width_5'><input type='submit' data-theme='w' value='Reedem Now' data-inline='true'></td><td><a data-role='button' data-icon='pagemenu-share' data-iconpos='notext' href='index.html' data-shadow='false' data-corners='false'></a></td></tr></table></div>"
                    });
                }
                console.log(items);
                $("#rewards-list").html(items);

});

}
4

1 に答える 1

3

を探していると思いますArray.indexOf

https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Array/indexOf

PS。これはアンダースコアで として利用できます_.indexOf

于 2012-12-04T08:30:12.283 に答える