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 回答