Javascript 将函数应用于填充数字的对象

Javascript 将函数应用于填充数字的对象,javascript,Javascript,我有一个简单的函数,它向给定日期添加一定的天数,并获取新日期: var adddays = 401; var theDate = new Date(2014, 01, 01); var myNewDate = new Date(theDate); myNewDate.setDate(myNewDate.getDate() + adddays); console.log(myNewDate); 我现在不是一次只做一个日期,而是在这样一个对象中获取日期:{543563601629650672698

我有一个简单的函数,它向给定日期添加一定的天数,并获取新日期:

var adddays = 401;
var theDate = new Date(2014, 01, 01);
var myNewDate = new Date(theDate);
myNewDate.setDate(myNewDate.getDate() + adddays);
console.log(myNewDate);
我现在不是一次只做一个日期,而是在这样一个对象中获取日期:
{543563601629650672698718}

问题是我如何通过这个函数运行所有这些天来获得一个具有新格式化日期的对象。对象中的这些数字将替代
adddays
。我知道我需要一个for循环,但我对JS有点陌生

var theDate = new Date(2014, 01, 01);
var newDates = ([543,563,601,629,650,672,698,718]).map(function (e) {
  var adddays = e;
  var myNewDate = new Date(theDate);
  myNewDate.setDate(myNewDate.getDate() + adddays);
  console.log(myNewDate);
  return myNewDate;
})


您接收的字符串不是有效的javascript对象,看起来更像一个数组。我们首先必须将它从字符串转换为数组

var daysToAdd = "{543,563,601,629,650,672,698,718}";
//Removing the {} brackets to turn it into a CSV
daysToAdd = daysToAdd.substring(1,daysToAdd.length-1)
//Using split to turn our values into an array
daysToAdd = daysToAdd.split(',');
//daysToAdd now looks like ["543","563","601","629","650","672","698","718"]
我们希望创建一个函数,该函数接受基本数据并返回调整后的日期,以便重新使用。在我们的函数中,我们可以对数组中的每个元素调用函数

function addAllDaysToDate(daysToAdd,referenceDate){
    var adjustedDays = daysToAdd.map(function(addDays){
         var date = new Date();
         //+variable is shorthand for parseInt(variable);
         date.setDate(referenceDate.getDate() + (+addDays));
         return date;
    });
    //Our adjustedDays is now an array of Date objects 
    return adjustedDays;
}
然后,我们可以使用我们的函数来获得调整后的日期

var theDate = new Date(2014, 01, 01);
var myNewDates = addAllDaysToDate(daysToAdd,theDate)

您接收的字符串不是有效的javascript对象,看起来更像一个数组。我们首先必须将它从字符串转换为数组

var daysToAdd = "{543,563,601,629,650,672,698,718}";
//Removing the {} brackets to turn it into a CSV
daysToAdd = daysToAdd.substring(1,daysToAdd.length-1)
//Using split to turn our values into an array
daysToAdd = daysToAdd.split(',');
//daysToAdd now looks like ["543","563","601","629","650","672","698","718"]
我们希望创建一个函数,该函数接受基本数据并返回调整后的日期,以便重新使用。在我们的函数中,我们可以对数组中的每个元素调用函数

function addAllDaysToDate(daysToAdd,referenceDate){
    var adjustedDays = daysToAdd.map(function(addDays){
         var date = new Date();
         //+variable is shorthand for parseInt(variable);
         date.setDate(referenceDate.getDate() + (+addDays));
         return date;
    });
    //Our adjustedDays is now an array of Date objects 
    return adjustedDays;
}
然后,我们可以使用我们的函数来获得调整后的日期

var theDate = new Date(2014, 01, 01);
var myNewDates = addAllDaysToDate(daysToAdd,theDate)


对象还是数组?另外,还有很多JavaScript教程,可以教你关于循环的知识,比如or。我假设你使用的是数组,而不是对象:
[543563601629650672698718]
@Andy不管什么原因,数据库中存储的是这种格式
{5435636016296506728718}
,那是一根绳子吗?@FelixKling我想是的。我没有那样看它。现在怎么办?对象还是数组?另外,还有很多JavaScript教程,可以教你关于循环的知识,比如or。我假设你使用的是数组,而不是对象:
[543563601629650672698718]
@Andy不管什么原因,数据库中存储的是这种格式
{5435636016296506728718}
,那是一根绳子吗?@FelixKling我想是的。我没有那样看它。现在怎么办?别忘了将结果分配给var
var newDates=([543…])。map..
谢谢。第一个选项运行良好,但第二个选项更符合我的需要,但我得到一个错误“uncaughtreferenceerror:ParseInt未定义”,从ParseInt更改为ParseInt,工作正常。谢谢。当您使用
parseInt(e,10)
时,请尝试包含基数。不要忘记将结果分配给var
var newDates=([543…])。映射..
谢谢。第一个选项运行良好,但第二个选项更符合我的需要,但我得到一个错误“uncaughtreferenceerror:ParseInt未定义”,从ParseInt更改为ParseInt,工作正常。谢谢。当您使用
parseInt(e,10)
daysToAdd时,请尝试包含基数。子字符串(1,daysToAdd.length-1)
是错误的。它应该是
daysToAdd.substring(1,daysToAdd.length-2)
daysToAdd.substring(1,daysToAdd.length-1)
错误。它应该是
daysToAdd.substring(1,daysToAdd.length-2)