Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/401.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javascript。如何计算每个月的成本?_Javascript - Fatal编程技术网

javascript。如何计算每个月的成本?

javascript。如何计算每个月的成本?,javascript,Javascript,我反对: const obj = { "20": {budget:345, periodFrom:"2019-03-23", periodTo:"2019-04-17"}, "39": {budget:234, periodFrom:"2019-03-11", periodTo:"2019-03-28"} } 有必要计算每个月花了多少钱,在这种情况下是在2月和3月。 我写的代码不起作用 const-budgetSummary={}; Object.values(obj.forE

我反对:

const obj = {
    "20": {budget:345, periodFrom:"2019-03-23", periodTo:"2019-04-17"},
    "39": {budget:234, periodFrom:"2019-03-11", periodTo:"2019-03-28"}
}
有必要计算每个月花了多少钱,在这种情况下是在2月和3月。 我写的代码不起作用

const-budgetSummary={};
Object.values(obj.forEach)(props=>{
const{budget,periodFrom,periodTo}=props;
const daysInPeriods=时刻(periodTo).diff(时刻(periodFrom),“天”);
const costOneDay=预算/天期间;
设startDate=periodFrom;
while(开始日期周期到?周期到:添加月份;
}
});
控制台日志(预算摘要);

但并没有推断出预期的结果。如何修复它?哦,数学,数学…

这样至少你的代码可以运行:

const moment = require('moment');

const budgetSummary = {};
const obj = {
    "20": {budget:345, periodFrom:"2019-03-23", periodTo:"2019-04-17"},
    "39": {budget:234, periodFrom:"2019-03-11", periodTo:"2019-03-28"}
}

Object.values(obj).forEach(props => {
  const { budget, periodFrom, periodTo } = props;

  const daysInPeriods = moment(periodTo).diff(moment(periodFrom), 'days');
  const costOneDay = budget / daysInPeriods;

  let startDate = moment(periodFrom);

  while (startDate.diff(periodTo) < 0) {
    const addingMonth = startDate.add(1, 'months');
    const formattedBudget = startDate.format('YYYY-MM');
    const days = startDate.clone().endOf('month').diff(startDate, 'days');

    const cost = budgetSummary[formattedBudget] || 0;

    budgetSummary[formattedBudget] = cost + days * costOneDay;

    startDate = addingMonth > periodTo ? periodTo : addingMonth;
  }
});

console.log(budgetSummary);
const moment=require('moment');
const budgetSummary={};
常量对象={
“20”:{预算:345,期间从:“2019-03-23”,期间到:“2019-04-17”},
“39”:{预算:234,期间从:“2019-03-11”,期间到:“2019-03-28”}
}
Object.values(obj.forEach)(props=>{
const{budget,periodFrom,periodTo}=props;
const daysInPeriods=时刻(periodTo).diff(时刻(periodFrom),“天”);
const costOneDay=预算/天期间;
设startDate=力矩(周期从);
while(起始日期差(周期到)<0){
const addingMonth=startDate.add(1,“月”);
const formattedBudget=startDate.format('YYYY-MM');
const days=startDate.clone().endOf('month').diff(startDate,'days');
施工成本=预算汇总[格式预算]| | 0;
预算汇总[格式预算]=成本+天数*成本一天;
startDate=添加月份>周期到?周期到:添加月份;
}
});
控制台日志(预算摘要);
我修复了缺少的属性和对象初始化。
还修复了您试图添加的
startDate
对象。添加,但它不是瞬间对象。

通过类似的方式,至少您的代码可以运行:

const moment = require('moment');

const budgetSummary = {};
const obj = {
    "20": {budget:345, periodFrom:"2019-03-23", periodTo:"2019-04-17"},
    "39": {budget:234, periodFrom:"2019-03-11", periodTo:"2019-03-28"}
}

Object.values(obj).forEach(props => {
  const { budget, periodFrom, periodTo } = props;

  const daysInPeriods = moment(periodTo).diff(moment(periodFrom), 'days');
  const costOneDay = budget / daysInPeriods;

  let startDate = moment(periodFrom);

  while (startDate.diff(periodTo) < 0) {
    const addingMonth = startDate.add(1, 'months');
    const formattedBudget = startDate.format('YYYY-MM');
    const days = startDate.clone().endOf('month').diff(startDate, 'days');

    const cost = budgetSummary[formattedBudget] || 0;

    budgetSummary[formattedBudget] = cost + days * costOneDay;

    startDate = addingMonth > periodTo ? periodTo : addingMonth;
  }
});

console.log(budgetSummary);
const moment=require('moment');
const budgetSummary={};
常量对象={
“20”:{预算:345,期间从:“2019-03-23”,期间到:“2019-04-17”},
“39”:{预算:234,期间从:“2019-03-11”,期间到:“2019-03-28”}
}
Object.values(obj.forEach)(props=>{
const{budget,periodFrom,periodTo}=props;
const daysInPeriods=时刻(periodTo).diff(时刻(periodFrom),“天”);
const costOneDay=预算/天期间;
设startDate=力矩(周期从);
while(起始日期差(周期到)<0){
const addingMonth=startDate.add(1,“月”);
const formattedBudget=startDate.format('YYYY-MM');
const days=startDate.clone().endOf('month').diff(startDate,'days');
施工成本=预算汇总[格式预算]| | 0;
预算汇总[格式预算]=成本+天数*成本一天;
startDate=添加月份>周期到?周期到:添加月份;
}
});
控制台日志(预算摘要);
我修复了缺少的属性和对象初始化。
还修复了您试图添加的
startDate
对象。添加但它不是瞬间对象。

什么是预算摘要[formattedBudget]?尝试解释逻辑以获得快速答案。花大量时间理解代码,如果代码正确,您不会在此处发布问题。因此,尝试解释您想要实现的目标。什么是预算摘要[格式预算]?尝试解释逻辑以获得快速答案。花费大量时间来理解代码,如果正确,您不会在此处发布问题。因此,尝试解释您想要实现的目标。谢谢。代码似乎有效,但只显示了3月份的结果,而不是2月份的结果。将代码移到沙箱谢谢。代码似乎有效,但只显示3月份的结果,而不显示2月份的结果。已将代码移动到沙箱