JavaScript 比较对象原型并求和
JavaScript compare object prototype and sum them
我被 JavaScript 练习困住了,我需要在 JavaScript 中创建一个脚本,用户输入月份和雨的 ML 属于那个月份,程序将 returns a table 带有月份和雨水,但它需要对重复月份的雨水求和,例如一月重复三次所以 table 需要显示这三个月的总和.
我这样做了,但是在重复月份中循环两次,我不知道如何在重复月份的总和之后打破它,这是代码:
var proceed = true;
function Mes(mes, lluvia) {
this.month = mes;
this.rain = lluvia;
}
datos = [];
meses = ["Enero", "Febrero"];
while (proceed) {
var mes = prompt("Ingresa el mes", "");
var lluvia = parseInt(prompt("Ingrese los ml de lluvia correspondiente al mes", ""));
new Mes(mes, lluvia);
datos.push(new Mes(mes, lluvia));
proceed = confirm("Deseas continuar?");
}
for (var j = 0; j < datos.length; j++) {
if (datos[j].month == meses[0]) {
var initialValue = 0;
var sum = datos.reduce(function(accumulator, currentValue) {
return accumulator + currentValue.rain;
}, initialValue)
//document.write("El acumulado de todos los meses ingresados es de " + sum);
document.write("<table>");
document.write("<tr>");
document.write("<td>" + datos[j].month + "</td>");
document.write("<td>" + sum + "</td>");
document.write("</tr>");
document.write("</table>");
} else {
document.write("<table>");
document.write("<tr>");
document.write("<td>" + datos[j].month + "</td>");
document.write("<td>" + datos[j].rain + "</td>");
document.write("</tr>");
document.write("</table>");
}
}
创建一个对象,其键是月份名称,值是总降雨量。遍历您的数组并将每次降雨量添加到适当的总数。
此外,您应该只创建一个 table;循环应该只创建行。
var proceed = true;
function Mes(mes, lluvia) {
this.month = mes;
this.rain = lluvia;
}
datos = [];
meses = ["Enero", "Febrero"];
while (proceed) {
var mes = prompt("Ingresa el mes", "");
if (meses.includes(mes)) {
var lluvia = parseInt(prompt("Ingrese los ml de lluvia correspondiente al mes", ""));
datos.push(new Mes(mes, lluvia));
} else {
alert("Mal mes");
}
proceed = confirm("Deseas continuar?");
}
var totals = datos.reduce((obj, {month, rain}) => {
if (month in obj) {
obj[month] += rain;
} else {
obj[month] = rain;
}
return obj;
}, {});
document.write("<table>");
document.write("<tr><th>Mes</th><th>Total</th></tr>");
meses.forEach(month => {
document.write("<tr>");
document.write("<td>" + month + "</td>");
document.write("<td>" + totals[month] + "</td>");
document.write("</tr>");
});
document.write("</table>");
我被 JavaScript 练习困住了,我需要在 JavaScript 中创建一个脚本,用户输入月份和雨的 ML 属于那个月份,程序将 returns a table 带有月份和雨水,但它需要对重复月份的雨水求和,例如一月重复三次所以 table 需要显示这三个月的总和.
我这样做了,但是在重复月份中循环两次,我不知道如何在重复月份的总和之后打破它,这是代码:
var proceed = true;
function Mes(mes, lluvia) {
this.month = mes;
this.rain = lluvia;
}
datos = [];
meses = ["Enero", "Febrero"];
while (proceed) {
var mes = prompt("Ingresa el mes", "");
var lluvia = parseInt(prompt("Ingrese los ml de lluvia correspondiente al mes", ""));
new Mes(mes, lluvia);
datos.push(new Mes(mes, lluvia));
proceed = confirm("Deseas continuar?");
}
for (var j = 0; j < datos.length; j++) {
if (datos[j].month == meses[0]) {
var initialValue = 0;
var sum = datos.reduce(function(accumulator, currentValue) {
return accumulator + currentValue.rain;
}, initialValue)
//document.write("El acumulado de todos los meses ingresados es de " + sum);
document.write("<table>");
document.write("<tr>");
document.write("<td>" + datos[j].month + "</td>");
document.write("<td>" + sum + "</td>");
document.write("</tr>");
document.write("</table>");
} else {
document.write("<table>");
document.write("<tr>");
document.write("<td>" + datos[j].month + "</td>");
document.write("<td>" + datos[j].rain + "</td>");
document.write("</tr>");
document.write("</table>");
}
}
创建一个对象,其键是月份名称,值是总降雨量。遍历您的数组并将每次降雨量添加到适当的总数。
此外,您应该只创建一个 table;循环应该只创建行。
var proceed = true;
function Mes(mes, lluvia) {
this.month = mes;
this.rain = lluvia;
}
datos = [];
meses = ["Enero", "Febrero"];
while (proceed) {
var mes = prompt("Ingresa el mes", "");
if (meses.includes(mes)) {
var lluvia = parseInt(prompt("Ingrese los ml de lluvia correspondiente al mes", ""));
datos.push(new Mes(mes, lluvia));
} else {
alert("Mal mes");
}
proceed = confirm("Deseas continuar?");
}
var totals = datos.reduce((obj, {month, rain}) => {
if (month in obj) {
obj[month] += rain;
} else {
obj[month] = rain;
}
return obj;
}, {});
document.write("<table>");
document.write("<tr><th>Mes</th><th>Total</th></tr>");
meses.forEach(month => {
document.write("<tr>");
document.write("<td>" + month + "</td>");
document.write("<td>" + totals[month] + "</td>");
document.write("</tr>");
});
document.write("</table>");