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