我正在使用jqueryui创建一个非常简化的拖放购物车版本。 我的问题是关于向数组添加数据(id,name,price)。
我尝试了几种将数据(也是数组)添加到主容器(数组)的方法。但我不断收到此错误:Uncaught TypeError: undefined is not a function
var data = [];
function addproduct(id,name,price){
//var d = [id,name,price];
data[id]["name"] = name;
data[id]["price"] = price;
data[id]["count"] = data[id]["count"]+1;
console.log(data);
}
可以通过按下按钮
来调用addproduct()函数答案 0 :(得分:1)
在您将多个商品添加到购物车后,我不清楚您希望最终使用哪种类型的数据结构。所以,这个答案是基于你在你的问题中尝试做什么的猜测,但是如果你在购物车中有几个项目之后显示了你想要的实际结构的Javascript文字,我们可以肯定我们会提出最好的建议。
您必须初始化javascript对象或数组才能使用它。通常的方法是检查它是否存在,如果不存在,则在分配之前对其进行初始化。而且,由于您要保留count
,因此您还需要初始化计数。
var data = [];
function addproduct(id,name,price){
if (!data[id]) {
// initialize object and count
data[id] = {count: 0};
}
data[id]["name"] = name;
data[id]["price"] = price;
++data[id]["count"];
console.log(data);
}
而且,FYI,数组用于数字索引。如果您正在使用" name"等属性名称。和"价格"要访问属性,您应该使用对象而不是数组。
并且,我建议您对已知属性字符串使用点语法:
var data = [];
function addproduct(id,name,price){
if (!data[id]) {
// initialize object and count
data[id] = {count: 0};
}
data[id].name = name;
data[id].price = price;
++data[id].count;
console.log(data);
}
答案 1 :(得分:0)
看起来你想要的是一个对象数组,虽然我需要更详细地描述你的问题。
var data = []
function addproduct(id, name, price)
{
data.push({'id': id, 'name':name, 'price': price, 'count': ++count});
console.log(data);
}