Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/455.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_Arrays_Function - Fatal编程技术网

Javascript 使用循环中的函数将数据推入数组

Javascript 使用循环中的函数将数据推入数组,javascript,arrays,function,Javascript,Arrays,Function,我有一个数组,里面有一组不同玩家的生日。 对于这些生日,我编写了一个以生日为参数的函数,调用该函数时将返回该玩家的年龄 现在我想自动化这个过程。为此,我尝试创建一个for循环,每次迭代我都想将日期推送到一个新的空数组中,在这里我使用push()方法和我编写的函数,根据每个玩家的出生日期分配给定的玩家年龄,以便以后可以将它们合并 这就是函数 function getAge (dateString) { var today = new Date(); var birthDate =

我有一个数组,里面有一组不同玩家的生日。 对于这些生日,我编写了一个以生日为参数的函数,调用该函数时将返回该玩家的年龄

现在我想自动化这个过程。为此,我尝试创建一个for循环,每次迭代我都想将日期推送到一个新的空数组中,在这里我使用push()方法和我编写的函数,根据每个玩家的出生日期分配给定的玩家年龄,以便以后可以将它们合并

这就是函数

function getAge (dateString) {
    var today = new Date();
    var birthDate = new Date(dateString);
    var age = today.getFullYear() - birthDate.getFullYear();
    var m = today.getMonth() - birthDate.getMonth();
    if (m = 0 || (m === 0 && today.getDate() <  birthDate.getDate())) {
        age--;
    }
    return age;
}
函数getAge(日期字符串){
var today=新日期();
var birthDate=新日期(日期字符串);
var age=today.getFullYear()-birthDate.getFullYear();
var m=today.getMonth()-birthDate.getMonth();
如果(m=0 | |(m==0&&today.getDate()
这是我尝试自动化的过程

var playerAgeDate = ["Jan 8, 1990", "Mar 3, 1995", "Jun 10, 1991", "Jun 19, 1996", "Jul 26, 1988", "Mar 17, 1986", "Nov 10, 1985", "Dec 13, 1994", "Jan 24, 1996", "Jul 14, 1997", "Jan 2, 1991", "Apr 14, 1997", "Mar 17, 1987", "Mar 10, 1989", "Jul 2, 1999", "Jun 17, 1991", "Apr 17, 1996", "Mar 11, 1991", "Jun 20, 1989", "May 5, 1999", "Mar 25, 1993", "Dec 15, 1988", "Jul 17, 1997", "Mar 11, 1999", "Jul 4, 1997", "Jul 8, 1983"];
var playerAgeYear = [];
for (var i = 0; i < playerAgeYear.length; i++) {
  playerAgeYear.push(getAge(playerAgeDate[i]));
 } 
var playerAgeDate=[“1990年1月8日”、“1995年3月3日”、“1991年6月10日”、“1996年6月19日”、“1988年7月26日”、“1986年3月17日”、“1985年11月10日”、“1994年12月13日”、“1996年1月24日”、“1997年7月14日”、“1991年1月2日”、“1997年4月14日”、“1987年3月17日”、“1989年3月10日”、“1999年7月2日”、“1991年6月17日”、“1996年4月17日”、“1991年3月11日”、“1989年6月20日”、“1999年5月5日”,“1993年3月25日”、“1988年12月15日”、“1997年7月17日”、“1999年3月11日”、“1997年7月4日”、“1983年7月8日”];
var playerAgeYear=[];
对于(变量i=0;i

我希望它按顺序分配正确的值,这样我就可以很容易地组合这两个值供以后使用,但数组仍然是空的。

您需要从原始数组
playerAgeDate
中获取长度,而不是从空的目标数组
playerAgeYear
中获取长度

for (var i = 0; i < playerAgeDate.length; i++) {
for(变量i=0;i
函数getAge(日期字符串){
var today=新日期();
var birthDate=新日期(日期字符串);
var age=today.getFullYear()-birthDate.getFullYear();
var m=today.getMonth()-birthDate.getMonth();
如果(m!==0 | | m==0&&today.getDate()console.log(playerAgeYear);
playerAgeYear

您差一点就得到了它,您只是使用了错误的数组来确定
for
循环的停止条件。您需要使用
playerAgeDate
长度,而不是
playerAgeYear
,因为这个循环开始时是空的

var playerAgeDate = ["Jan 8, 1990", "Mar 3, 1995", "Jun 10, 1991", "Jun 19, 1996", "Jul 26, 1988", "Mar 17, 1986", "Nov 10, 1985", "Dec 13, 1994", "Jan 24, 1996", "Jul 14, 1997", "Jan 2, 1991", "Apr 14, 1997", "Mar 17, 1987", "Mar 10, 1989", "Jul 2, 1999", "Jun 17, 1991", "Apr 17, 1996", "Mar 11, 1991", "Jun 20, 1989", "May 5, 1999", "Mar 25, 1993", "Dec 15, 1988", "Jul 17, 1997", "Mar 11, 1999", "Jul 4, 1997", "Jul 8, 1983"];
var playerAgeYear = [];
for (var i = 0; i < playerAgeDate.length; i++) {
  playerAgeYear.push(getAge(playerAgeDate[i]));
 } 
var playerAgeDate=[“1990年1月8日”、“1995年3月3日”、“1991年6月10日”、“1996年6月19日”、“1988年7月26日”、“1986年3月17日”、“1985年11月10日”、“1994年12月13日”、“1996年1月24日”、“1997年7月14日”、“1991年1月2日”、“1997年4月14日”、“1987年3月17日”、“1989年3月10日”、“1999年7月2日”、“1991年6月17日”、“1996年4月17日”、“1991年3月11日”、“1989年6月20日”、“1999年5月5日”,“1993年3月25日”、“1988年12月15日”、“1997年7月17日”、“1999年3月11日”、“1997年7月4日”、“1983年7月8日”];
var playerAgeYear=[];
对于(变量i=0;i

正如@chrispback所指出的,您在
if
条件中也使用赋值运算符
=
,而不是可能预期的比较运算符
您只是在循环中有一个错误,因为您在循环的停止条件中放置了错误的数组。
您应该在数组中输入日期:
playerAgeDate
,而不是
playerAgeYear
,该日期为空

此外,克里斯·培根(chris p bacon)在您分配的评论中说了
m=0
,而不是测试他的值
m==0

这将起作用

函数getAge(日期字符串){
var today=新日期();
var birthDate=新日期(日期字符串);
var age=today.getFullYear()-birthDate.getFullYear();
var m=today.getMonth()-birthDate.getMonth();
如果(m==0 | |(m==0&&today.getDate()console.log(playerAgeYear)
如果他在If中也赋值了m=0如果他在If中也赋值了m=0耶稣基督我怎么会忽略它!非常感谢!他在IfUpp中也赋值了m=0,这就是解决方案!非常感谢哈哈