每样商品有id, title, price, 每点击一次购买我就将其加入数组,但是我想根据Id判断,当重复加入一件产品到购物车的时候,将相同的产品加入一个二维数组,怎么写呢?
<code>[ [ {鸡腿},{鸡腿},{鸡腿},{鸡腿} ], [ {狗腿},{狗腿},{狗腿} ], [ {猫咪},{猫咪},{猫咪},{猫咪},{猫咪},{猫咪} ] ] </code>
谢谢各位,确实我这种思路确实很辣鸡,感谢你们的建议!
每样商品有id, title, price, 每点击一次购买我就将其加入数组,但是我想根据Id判断,当重复加入一件产品到购物车的时候,将相同的产品加入一个二维数组,怎么写呢?
<code>[ [ {鸡腿},{鸡腿},{鸡腿},{鸡腿} ], [ {狗腿},{狗腿},{狗腿} ], [ {猫咪},{猫咪},{猫咪},{猫咪},{猫咪},{猫咪} ] ] </code>
谢谢各位,确实我这种思路确实很辣鸡,感谢你们的建议!
上面的朋友说的没错,你的这种思路本身不可取。二维数组里面全是一样的东西。。有点坑。
这种格式好点,参考一下
<code>var cart = { 'id01':{n:'鸡腿', count: 4}, 'id02':{n:'鸭腿', count: 3}, 'id03':{n:'猪腿', count: 2}, 'id04':{n:'狗腿子', count: 1} } </code>
不过,如果你非要这样子做
<code>var list = [ [{n:'鸡腿'},{n:'鸡腿'},{n:'鸡腿'},{n:'鸡腿'},{n:'鸡腿'}], [{n:'鸭腿'},{n:'鸭腿'},{n:'鸭腿'},{n:'鸭腿'}], [{n:'猪腿'},{n:'猪腿'},{n:'猪腿'},{n:'猪腿'}] ]; function fn(o){ var inArray = false; list.map(function(item){ if( item.indexOf(o) > -1){ inArray = true; item.push(o); } }); inArray || list.push([o]); } fn(list[1][1]); fn({n:'狗腿子'}); </code>
这只是参考,不提倡
不建议这么写,购物车的数据结构应该存的是商品的id和数量(假设这里商品id就是名字)
<code>{ "鸡腿": 4, "狗腿": 3, "猫咪": 6 } </code>
具体实现的时候,购物车物品的增减,只要对后面这个数字进行加减就可以了
你这思路不对啊 , 上面那个说的对 购物车主体应该是$a = ['id'=>number]
,然后价格和名称应该是另外一个数组 $b = ['id'=>['name'=>name,'price'=>price]]
,总价格就是 $totalPrice = $a['id']*$b['id']['price']
同意楼上观点,购物车内的东西应该是个总体,但是价格个人觉得不应该存储到购物车数组中,因为你加入时候的价格和付款时候的价格不一定是相同的。存储的应该是唯一标识符id和数量number,你如果存储title的话,价格price,如果商家改了名字或者价格,你的设计该怎么处理呢!
<code>$shoppingCart = [ '101' => 4,//鸡腿 '102' => 5,//狗腿 '103' => 6//鸭腿 ];</code>
首先谢邀。
其实这个问题我昨天都看到这个问题了,我自己也认为楼上几位回答的不错。但见题主又邀请了我,只能发表下我的看法,当作抛砖引玉了。
其实我觉得几维数组不重要,怎么写不重要,重要的是思路。我主要对这方面做一个抛砖引玉的陈述。
其实现在这个年代吧,面向对象虽然是老生常谈的东西,但很多人仍然不太会加以运用,所以致使问题的复杂度直线上升,我们尝试以面向对象来解决这个问题试试吧:
<code class="javascript">//全局对象 var item_arr = {}; //操作函数 function add_(id, name, price, count) { var item = { id: id, name: name, price: price, count: count } var obj = item_arr[id] if (obj) { item.count = obj.count + count; } item_arr[item.id] = item; } //code by rozbo ,强力免山寨 //模拟添加购物操作 add_(19, "狗腿子", 16, 20); add_(1, "鸡腿子", 12, 2); add_(126, "羊腿子", 6, 6); add_(126, "羊腿子", 6, 6); //输出信息,计算价格 var price_totle = 0; for (var id in item_arr) { var item = item_arr[id]; var price_curr = item.count * item.price; price_totle += price_curr; console.info("当前有%s%d个,总价%d元", item.name, item.count, price_curr); } console.info("共计%d元,祝您购物愉快!", price_totle); </code>
输出结果