Javascript 按xpages中的合计值对文档集合进行排序

Javascript 按xpages中的合计值对文档集合进行排序,javascript,sorting,xpages,lotus-notes,document,Javascript,Sorting,Xpages,Lotus Notes,Document,我正在开发一个xpages应用程序,在该应用程序中,我希望显示每个客户端总卷数的前5位 我有一个购买任意数量产品的客户列表。我想根据购买的产品总量对客户进行分类。 我使用按客户分类的“Top5”视图 我使用文档集合来计算客户的总数量 我可以按降序对卷进行分类,并选择前5名。但这不允许我从视图中检索产品和客户端的名称 var cls3 = @DbColumn("","Top5",1); sessionScope.put("clientsList3",cls3); var db=session.ge

我正在开发一个xpages应用程序,在该应用程序中,我希望显示每个客户端总卷数的前5位

我有一个购买任意数量产品的客户列表。我想根据购买的产品总量对客户进行分类。 我使用按客户分类的“Top5”视图

我使用文档集合来计算客户的总数量

我可以按降序对卷进行分类,并选择前5名。但这不允许我从视图中检索产品和客户端的名称

var cls3 = @DbColumn("","Top5",1);
sessionScope.put("clientsList3",cls3);
var db=session.getCurrentDatabase();
var view7=db.getView("Top5")
var dataa =[] ;
         var top =[];

         for(var r = 0; r < clientsList3.length; r++){

           var Cli = @Trim(@Text(clientsList3[r]));
           var VolumeTotal :NotesDocumentCollection =  view7.getAllDocumentsByKey(Cli);

           var vola = 0;
           var array = new Array();
           var prod = "";

 if (VolumeTotal == 0) {array = 0;}
             else{
            var doca = VolumeTotal.getFirstDocument();
                while (doca != null)
                {vola = vola + doca.getItemValueInteger("TotalVolume_Intermediate");
                    doca = VolumeTotal.getNextDocument(doca);
                    }
                array.push(vola);

            }
        dataa[r] = array;
              dataa.sort(function(a, b) {return b - a;});         



   top = dataa.slice(0,5);


             } 

          return  dataa;

      }
var cls3=@DbColumn(“,“Top5”,1);
sessionScope.put(“clientsList3”,cls3);
var db=session.getCurrentDatabase();
var view7=db.getView(“Top5”)
var dataa=[];
var-top=[];
for(var r=0;r
您确实希望使用托管bean来实现这一点,它使很多事情变得更加简单。创建一个自定义类,该类为您执行比较操作:

   public Class TopSeller implements Comparable {
         String product;

      public String getProduct() {
        return this.product;
      }

      public void setProduct(String product) {
        this.product = product;
      }
        // Add properties as needed

      public int compareTo(Topseller theOther) {
           // Your ranking code goes here
      }
   }
在该类中,compareTo函数确实提供了排名和排序。那么你只需要:

  Set<TopSeller> allSeller = new TreeSet<TopSeller>();
Set allSeller=new TreeSet();

。。。你就完了。树集将提供已排序的结果,您只需将其绑定到一个包含5行的repeat即可显示

如果您确实想使用托管bean,它将使很多事情变得更加简单。创建一个自定义类,该类为您执行比较操作:

   public Class TopSeller implements Comparable {
         String product;

      public String getProduct() {
        return this.product;
      }

      public void setProduct(String product) {
        this.product = product;
      }
        // Add properties as needed

      public int compareTo(Topseller theOther) {
           // Your ranking code goes here
      }
   }
在该类中,compareTo函数确实提供了排名和排序。那么你只需要:

  Set<TopSeller> allSeller = new TreeSet<TopSeller>();
Set allSeller=new TreeSet();

。。。你就完了。树集将提供已排序的结果,您只需将其绑定到一个5行重复显示即可

请尝试更具体地说明“top5”视图中的主要排序顺序、总计信息等。此外,您还需要更具体地说明正在处理的数据:您想知道产品的总量吗,无论是哪一种(牛奶+报纸+汽车),还是任何一位客户购买每种产品的数量?稍后可能会出现更多问题…top5视图包含按客户分类的所有卷。以及按客户计算总卷(不考虑产品)的列。我想按客户显示总销量的前5名,而不考虑产品。。我可以显示列表中的前5个卷,但排序会使我丢失文档中的信息(即与卷相对应的客户机)。请尝试更具体地查看关于主要排序顺序的“前5”视图,总计信息等。您还需要更具体地了解您正在处理的数据:您想知道产品的总量,无论是哪种产品(牛奶+报纸+汽车),还是任何一位客户每种产品的购买量?稍后可能会出现更多问题…top5视图包含按客户分类的所有卷。以及按客户计算总卷(不考虑产品)的列。我想按客户显示总销量的前5名,而不考虑产品。。我可以显示列表中前5个卷,但排序会使我丢失文档中的信息(即与卷对应的客户端)