在循环javasccript中排序值

时间:2015-09-04 10:08:50

标签: javascript arrays sorting

我花了30分钟时间在这个网站上寻找这个问题的答案,但是我似乎试图解决这个问题。

        for (i=0;i<result.length;i++){
         var msg_pop = '<div class="info_window" style="cursor: pointer;" >'; 
         msg_pop += result[i].name + '<br/> ';
         msg_pop +=  result[i].team_member + '<br/> ';
         msg_pop +=  result[i].university + '<br/> ';
         msg_pop += '</div>';
        //alert(result[i].address);
   }

这是我进入循环的数据

     loop 1
      -------
         name0
         member0
         university0
         address0

      loop 2
      -------
         name1
         member1
         university1
         address1

      loop 3
      -------
         name2
         member2
         university2
         address0

      loop 4
      -------
         name3
         member3
         university3
         address1

      loop 5
      -------
         name4
         member4
         university4
         address0

需要得到像

这样的结果

结果

loop1
------
address0

    name0
    member0
    university0
    ------------
    name2
    member2
    university2
    ------------
    name4
    member4
    university4
loop 2
-------
address1

    name1
    member1
    university1
    -------------
    name3
    member3
    university3

如果按地址重复,我需要一个javascript for循环来获取循环内的值。

2 个答案:

答案 0 :(得分:0)

首先浏览你的数组并按地址分组。

var by_address = {};
for (var i = 0; i < result.length; i++) {
    var address = result[i].address;
    if (!by_address[address]) {
        by_address[address] = [];
    }
    by_address[address].push(result[i]);
}

然后你可以遍历by_address对象:

var msg_pop = '';
for (var addr in by_address) {
    msg_pop += '<div>' + addr;
    for (var i = 0; i < by_address[addr].length; i++) {
        msg_pop += '<div class="info_window" style="cursor: pointer;" >'; 
        msg_pop += by_address[addr].name + '<br/> ';
        msg_pop += by_address[addr].team_member + '<br/> ';
        msg_pop += by_address[addr].university + '<br/> ';
        msg_pop += '</div>';
    }
    msg_pop += '</div>';
}

答案 1 :(得分:0)

谢谢我尝试了这个并且它有效。

for (i=0;i<result.length;i++){
var msg_pop = '<div class="info_window" style="cursor: pointer;" >'; 
    for(j=0;j<result.length;j++){

                if(result[i].address==result[j].address)
                {
                    msg_pop += '<a href="'+result[j].guid+'"> ';
                    msg_pop += result[j].name + '<br/> ';
                    msg_pop +=  result[j].team_member + '<br/> ';
                    msg_pop +=  result[j].university + '<br/></a>';
                    if(j>=1)
                    {
                    msg_pop += '<hr/> ';
                    }
                }
                }
    msg_pop += '</div>';

}