首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在asp-classic中计算购物车二维数组商品

在asp-classic中计算购物车二维数组商品
EN

Stack Overflow用户
提问于 2012-08-09 12:28:57
回答 1查看 701关注 0票数 0

我有一个购物车,使用2d数组Cart(3, 20)在会话中存储用户商店。

It存储数据的方式如下:

代码语言:javascript
复制
 Cart(0,0) = Product_ID
 Cart(1,0) = Product_Name
 Cart(2,0) = Product_Price
 Cart(3,0) = Product_Qty

我想根据product_id计算条目(我们没有重复的product_id)我在这里找到了一个函数:

代码语言:javascript
复制
Function UniqueEntryCount(SourceRange)

  Dim MyDataset
  Dim dic
  Set dic=Server.CreateObject("Scripting.Dictionary")

  MyDataset = SourceRange

  For i = 1 To UBound(MyDataset, 2)
   if not dic.Exists(MyDataset(0, i)) then dic.Add MyDataset(0, i), ""
  Next


  UniqueEntryCount = dic.Count
  Set dic = Nothing


End Function

但是有一个问题仍然存在,当我的购物车是空的时候,它会显示1

怎么才能解决呢?

EN

回答 1

Stack Overflow用户

发布于 2012-08-09 14:47:03

一个单元化的固定数组(Dim a(i,j))包含i*j个空元素;

代码语言:javascript
复制
if not dic.Exists(MyDataset(0, i)) then dic.Add MyDataset(0, i), ""

将拾取并计算第一个空项。代码演示:

代码语言:javascript
复制
  Dim afCart(3, 4)
  Dim dicPID : Set dicPID = countPID00(afCart)
  Dim aKeys  : aKeys      = dicPID.Keys
  Dim vKey   : vKey       = aKeys(0)
  WScript.Echo "A", dicPID.Count, TypeName(vKey)
  Set dicPID = countPID(afCart)
  WScript.Echo "B", dicPID.Count

  afCart(0, 0) = "ignored"
  afCart(0, 1) = 4711
  afCart(0, 2) = 4712
  afCart(0, 3) = 4711
' afCart(0, 4) = "not initialized/Empty"

  Set dicPID = countPID(afCart)
  WScript.Echo "C"
  For Each vKey In dicPID.Keys
      WScript.Echo "", vKey, "=", dicPID(vKey)
  Next

Function countPID00(afCart)
  Dim dicRVal   : Set dicRVal = CreateObject("Scripting.Dictionary")
  Dim MyDataset : MyDataset   = afCart ' waste of ressources
  Dim iRow
  For iRow = 1 To UBound(MyDataset, 2)
      If Not dicRVal.Exists(MyDataset(0, iRow)) Then
         dicRVal(MyDataset(0, iRow)) = "" ' loss of info; will pick up Empty item
      End If
  Next
  Set countPID00 = dicRVal
End Function ' countPID00

Function countPID(afCart)
  Dim dicRVal : Set dicRVal = CreateObject("Scripting.Dictionary")
  Dim iRow
  For iRow = 1 To UBound(afCart, 2)
      If Not IsEmpty(afCart(0, iRow)) Then
         dicRVal(afCart(0, iRow)) = dicRVal(afCart(0, iRow)) + 1
      End If
  Next
  Set countPID = dicRVal
End Function ' countPID

输出:

代码语言:javascript
复制
A 1 Empty
B 0
C
 4711 = 2
 4712 = 1
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11876823

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档