Javascript矩阵数组问题

Javascript matrix array issue

我正在使用 jqueryui 创建一个非常简化的拖放购物车版本。 我的问题是关于将数据(id、名称、价格)添加到数组。

我尝试了几种将数据(也是数组)添加到主容器(数组)的方法。但我不断收到此错误: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() 函数可以通过按一个按钮来调用

我不完全清楚在将大量商品添加到购物车后您希望最终得到哪种类型的数据结构。所以,这个答案是基于你在问题中尝试做的事情的猜测,但是如果你显示一个 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);
}

仅供参考,数组用于数字索引。如果您使用 属性 名称,如 "name" 和 "price" 来访问属性,您应该使用对象而不是数组。


而且,我建议您对已知的 属性 个字符串使用点语法:

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);
}

看起来你想要的是一个对象数组,但我需要对你的问题进行更详细的描述才能清楚。

var data = []

function addproduct(id, name, price)
{
    data.push({'id': id, 'name':name, 'price': price, 'count': ++count});
    console.log(data);

}