我的AS3代码正在搜索我的数据库并在列表(textfield)中显示所有“产品”。
function displayPage(pageIndex:int):void {
list.removeChildren();
currentPageIndex = pageIndex;
var firstItemIndex:int = pageIndex * itemsPerPage;
var j:int = 0;
var lastItemIndex: int = firstItemIndex + 10; // as lastItemIndex should be 10 more
if (lastItemIndex > products.length) // if lastindex is greater than products length
lastItemIndex = products.length;
for(var i:int = firstItemIndex; i< lastItemIndex; i++){
createListItem( j, products[i]); // j control the position and i points to particular element of array..
j++;
}
}
function complete(e:Event):void {
loading.visible=false;
addChild(list);
products = JSON.parse(loader5.data) as Array;
products.reverse();
for(var i:int = 0; i < products.length; i++){
createListItem(i, products[i]);
}
displayPage(0);
showList();
}
function createListItem(index:int, item:Object):void {
var listItem:TextField = new TextField();
listItem.text = item.title;
list.addChild(listItem);
str = item.title;
}
在我的数据库中,我有一行“stampTime”。
如何以DESCENDING顺序显示列表中的产品(就stampTime而言,不是每个产品的第一个字母)?
我想它必须像
products.sort(Array.DESCENDING);
但是如何告诉AS3每个产品的降价顺序是按照时间(item.stampTime
)?
答案 0 :(得分:1)
products.sortOn("stampTime", Array.DESCENDING)
您可以在this上学习。
答案 1 :(得分:0)
遍历数组并评估每个数组元素中的每个时间戳,如果它是最小的(或最大的),则将其推送到新数组。在该循环结束后,您的初始数组将为空,并且您的新临时数组将按升序(或降序)顺序填充。然后,遍历临时数组并将它们全部推回到第一个数组中。现在,您的数组基于时间戳排序。
答案 2 :(得分:0)
Array.sort
方法适用于基本数组
在您的情况下,products
看起来像一个对象数组
您可以使用Array.sortOn
方法。
// sort the stampTime field numerically in descending order
products.sortOn( ["stampTime"], [Array.DESCENDING|Array.NUMERIC]);
也许您的complete
方法如下所示。
function complete(e:Event):void {
loading.visible=false;
addChild(list);
products = JSON.parse(loader5.data) as Array;
//products.reverse();
products.sortOn(["stampTime"], [Array.DESCENDING|Array.NUMERIC]);
for(var i:int = 0; i < products.length; i++){
createListItem(i, products[i]);
}
displayPage(0);
showList();
}