次の JavaScript 構文があります。
console.log(printClassified(classifyByDayOfWeek(myData)));
mySundaysData = new Array(printClassified(classifyByDayOfWeek(myData)));
console.log(mySundaysData);
var mySundaysTotal = 0;
for(var i=0, len=mySundaysData.length; i<len; i++){
mySundaysTotal += parseFloat(mySundaysData[i][1]);
}
console.log(mySundaysTotal);
Google Chrome コンソール:
printClassified(classifyByDayOfWeek(myData)) = [2013-04-21, 1][2013-04-28, 0][2013-05-05, 2][2013-05-12, 0]
mySundaysData = ["[2013-04-21, 1][2013-04-28, 0][2013-05-05, 2][2013-05-12, 0]"]
mySundaysTotal = 2
上記の例では、配列から値を数えたいと思います: 1 + 0 + 2 + 0 で、3 になるはずですが、代わりに 2 になりconsole.log(mySundaysTotal)
ます。他の配列を取得した場合でも、mySundaysTotal は常に 2 です。なぜですか? 私は何を間違っていますか?
編集: コードの残りの部分:
function sorter(a, b) {
var d1 = new Date(a[0].replace("-", "/")).getDay();
var d2 = new Date(b[0].replace("-", "/")).getDay();
return d1 - d2;
}
function classifyByDayOfWeek(customArr) {
var byDayOfWeek = [[], [], [], [], [], [], []];
for (var i = 0; i < customArr.length; i++) {
var day = new Date(customArr[i][0]).getDay();
byDayOfWeek[day].push(customArr[i]);
};
return byDayOfWeek;
}
function printRaw(arr) {
str = "";
for (var i = 0; i < arr.length; i++) {
str += "[" + arr[i][0] + ", " + arr[i][1] + "]";
}
return str;
}
function printClassified(arr) {
str = "";
str += printRaw(arr[0]);
return str;
}
JSFiddle - http://jsfiddle.net/DanielaVaduva/NUHFu/