我有一个jsp页面,下面是for循环:
<c:forEach var="myItem" items="${itemsList}">
<table border="0" class="table_class">
<tr>
<td colspan="1" valign="bottom">Item #${myItem.item_number}
</td>
<td colspan="2" align="left"><b>Item Name : ${myItem.item_name}</b>
</td>
</tr>
<tr>
<td class="gridcolumnclass">${myItem.item_desc}
</td>
</tr>
</table>
</c:forEach>
很明显,对于每个项目,都会发布两行,第一行包含两列包含ITEM_NUMBER和ITEM_NAME,第二行包含ITEM_DESCRIPTION。
例如,我有以下项目集
1, banana, some_desc
2, banana, some_desc
3, apple, some_desc
4, banana, some_desc
5, banana, some_desc
6, apple, some_desc
7, apple, some_desc
8, banana, some_desc
9, apple, some_desc
10, apple, some_desc
11, banana, some_desc
如果上面的列表被传递到for循环,在显示器上会有两个香蕉,然后是一个苹果,然后是两个香蕉,然后是两个苹果,然后是一个香蕉,然后是两个苹果,最后是给定的香蕉订购。
但是,我怎么能把苹果和香蕉放在一起?
我的显示屏应首先显示所有香蕉,然后是苹果。
感谢阅读。
答案 0 :(得分:0)
我猜这些项目是一个对象(或数组)。 Javascript具有.sort()函数,可以使用函数。
function compare(a,b) {
if (a.item_name < b.item_name)
return -1;
if (a.item_name > b.item_name)
return 1;
return 0;
}
myItem.sort(compare);
如果您想进一步采用这种方法并使比较功能动态化。 (所以你可以按另一个“字段”名称排序)this是一个好的开始;)
如果你不能用Javascript进行排序。 Here是基于Java的解决方案。它需要一些修改才能在你的情况下使用它。
希望这有帮助。