Bin计数器-递增javascript数组

Bin计数器-递增javascript数组,javascript,Javascript,我需要做一个垃圾箱柜台。这将是具体到我的数据,但作为一个例子,我将使用杂货店。我看到了很多增加项目的方法,但这更像是计算SQL列中不同项目的数量,我也不擅长 比如说,杂货店想通过收银机统计他们每天卖出的商品数量。在一天结束时,苹果和牛奶的数量可能会很高,但阵列必须能够从库存中添加元素,即使它们不经常出售 函数onDataBounde{ var grid=$'grid'。数据'kendoGrid'; const binCounter={}; $.eachgrid.items,函数索引,项{ var

我需要做一个垃圾箱柜台。这将是具体到我的数据,但作为一个例子,我将使用杂货店。我看到了很多增加项目的方法,但这更像是计算SQL列中不同项目的数量,我也不擅长

比如说,杂货店想通过收银机统计他们每天卖出的商品数量。在一天结束时,苹果和牛奶的数量可能会很高,但阵列必须能够从库存中添加元素,即使它们不经常出售

函数onDataBounde{ var grid=$'grid'。数据'kendoGrid'; const binCounter={}; $.eachgrid.items,函数索引,项{ var row=dataSource.getByUid$item.data'uid'; var itemName=row.itemName;//苹果、牛奶、避孕套、锤子等。 var soldAs=row.soldAs;//每个,6包,纸箱,打,箱等。 var itemColor=row.itemColor; //这里需要帮助 binCounter[itemName]++; binCounter[soldAs]++; binCounter[itemColor]++; }; $.eachbinCounter,函数索引,项{ console.log'binCounter['+index+']:'; console.logitem; } };
结果将存储binCounter['apple']和binCounter['milk']的数量。

您不能增加尚未初始化的仓位。你必须先检查箱子是否存在

所以不是

binCounter[itemName]++;
你需要

if (binCounter[itemName]) {
    binCounter[itemName]++;
} else {
    binCounter[itemName] = 1;
}
由于需要重复执行此操作,因此可以为其编写函数:

function increment_bin(binCounter, key) {
    if (binCounter[itemName]) {
        binCounter[itemName]++;
    } else {
        binCounter[itemName] = 1;
    }
}
那你就可以了

increment_bin(binCounter, itemName);
increment_bin(binCounter, soldAs);
increment_bin(binCounter, itemColor);

这种感觉就像您应该拥有具有名称、soldAs和颜色属性的对象,并将其推送到对象数组中……{name:apple,index:0,[{soldAs:each,count:0}],color:red}