Javascript矩阵数组问题

时间:2015-01-30 20:12:42

标签: javascript jquery arrays jquery-ui

我正在使用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()函数

2 个答案:

答案 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);

}