这就是我想要做的,
// declare an array with 16 items, each with intial value = 0
var countMe = [
["00", 0],
["01", 0],
["02", 0],
["03", 0],
["10", 0],
["11", 0],
["12", 0],
["13", 0],
["20", 0],
["21", 0],
["22", 0],
["23", 0],
["30", 0],
["31", 0],
["32", 0],
["33", 0]
];
// calculate number of items for each array item by adding +1 to its previous value
$.each(dataFruits, function (index, item) {
if (item.weight > -1 && item.quantity > -1) {
countMe["" + item.weight + item.quantity, 1][1] = countMe["" + item.weight + item.quantity, 1][1] + 1;
}
});
// go through array and call method for each array item whose value is more then zero
for (var i = 0; i < 3; i++) {
for (var j = 0; j < 3; j++) {
if (countMe["" + i + j, 1][1] > 0) {
CreateText(countMe["" + i + j, 1][1], "black", 33, countMe["" + i + j, 0][0]);
}
}
}
问题
我无法获得数组的值
我可以更新其值
它不会抛出任何错误,只是不给我任何价值。
答案 0 :(得分:3)
对于这种情况,您应该使用普通的JavaScript对象(键值对)。
// Create a JavaScript object
var countMe = {};
for (var i = 0; i < 4; i += 1) {
for (var j = 0; j < 4; j += 1) {
// Create new keys and initialize them with 0.
countMe["" + i + j] = 0;
}
}
console.log(countMe);
将是
{ '10': 0,
'11': 0,
'12': 0,
'13': 0,
'20': 0,
'21': 0,
'22': 0,
'23': 0,
'30': 0,
'31': 0,
'32': 0,
'33': 0,
'00': 0,
'01': 0,
'02': 0,
'03': 0 }
因此我们创建了一个JavaScript对象,然后你可以像这样计算
$.each(dataFruits, function (index, item) {
if (item.weight > -1 && item.quantity > -1) {
countMe["" + item.weight + item.quantity]++;
}
});
此处,countMe["" + item.weight + item.quantity]++
会增加与"" + item.weight + item.quantity
对应的数字。例如,如果weight
为1
且quantity
为2
,则该值将变为countMe["12"]
,并且对其的值将增加。
现在你计算了这些值,你可以像这样调用函数
for (var i = 0; i < 4; i += 1) {
for (var j = 0; j < 4; j += 1) {
if (countMe["" + i + j] > 0) {
CreateText(countMe["" + i + j], "black", 33, "" + i + j);
}
}
}
实际问题
当你这样做时
countMe["" + item.weight + item.quantity, 1]
索引部分
"" + item.weight + item.quantity, 1
将始终被评估为1
,因为逗号运算符会将其中的最后一个元素作为表达式的结果。您可以像这样确认
console.log((1, 2, 3, 4));
// 4
或
var a = (1, 2, 3, 4);
console.log(a);
// 4
所以,你总是访问["01", 0]
,因为那是索引1
的元素,然后你总是只递增那个值。
答案 1 :(得分:0)
我认为数组应该包含所有字符串或所有整数。
var arr = [01, 0];
或者
var arr = ["01", "0"]
您应该首选方法,以便于计算..