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

Javascript 对数组中的一个特定元素/值进行数学运算

Javascript 对数组中的一个特定元素/值进行数学运算,javascript,arrays,math,Javascript,Arrays,Math,这是我的数组:[2017,04,31] 如你所见,那是今天的日期。但它不是真正的今天的日期,因为我们必须减去-1的一个月。所以我需要的最终结果是:[2017,03,31] 我尝试了.map(),但这是数组中的元素/值。以下是一个例子: var array = [2017, 04, 31]; var new_array = array.map( function(value) { return value - 1; } ); 如何从月份(04)开始执行此操作和-1,因此它将是[201

这是我的数组:
[2017,04,31]

如你所见,那是今天的日期。但它不是真正的今天的日期,因为我们必须减去-1的一个月。所以我需要的最终结果是:
[2017,03,31]

我尝试了
.map()
,但这是数组中的元素/值。以下是一个例子:

var array = [2017, 04, 31];

var new_array = array.map( function(value) { 
    return value - 1;
} );

如何从月份(04)开始执行此操作和-1,因此它将是
[2017,03,31]

要获取和设置有效日期,您可以使用
日期
构造函数,格式为
以0为基础,
日期
.toJSON()
.replace()
RegExp
/(\d+/g'$1')
将每组数字用引号括起来
.slice()
带参数
0
10
获取日期的
YYYY-MM-DD
部分,
带参数
“-”
的.split()
获取表示有效日期的字符串数组

无法将
[2017,04,31]
[“2017”、“04”、“31”]
作为有效日期。四月最多有30个日期

要获取4月份的最后一个日期和3月份的最后一个日期,请使用数组作为值将其设置为
new date()
call的参数

var-arr=[2017,4,30];
函数DateAsArrayyyyyymmdd(数组){
返回新日期(array.toString().replace(/(\d+)/g,“$1”)
.toJSON().slice(0,10).split(“”);
}
//获取4月份的最后一个日期作为字符串值数组
var日期=dateAsArrayYYYYMMDD(arr);
控制台日志(日期);
//设置日期以反映3月份的最后一个日期,
//分配给'date'变量标识符
arr[1]=1;
arr[2]+=1;
日期=日期ArraYYYYMMDD(arr);
控制台日志(日期)
var数组=[2017,04,22];
数组[1]=03;

console.log(数组)
数组[1]-=1
“那是今天的日期”-不,不是。另外,您不能将
04
作为一个数字,如果要保留前导零,它必须是一个字符串
“04”
。04是一个八进制数,在本例中与4相同-您可能希望通过删除前导零来切换到十进制表示法。我们谈论的是哪个月?这是三月三十一日还是四月三十一日?将其传递到
新日期()
,是否需要减少月份数?那么新的日期(数组[0],数组[1]-1,数组[2])
那么数组[1]=-1原来的数组是硬编码的,为什么不直接硬编码3而不是4呢p@MohitBajoria,我想你在评论中将
array[1]=-1
array[1]-=1
混淆了。这是一个微小但实质性的区别。
04
是编写
Number
值的有效方法,但我仍然会避免它,因为在非严格模式下被解释为八进制。@le_我不确定OP试图实现什么。如果“输入”是
var array=[2017,04,31],为什么年份和日期会以字符串结束
@JaromandaX正在更新答案以使用
Date
String()
Array
方法。不确定输入如何可以是
04
,因为除了@le_m“硬编码”输入指出的数字外,其他数字可以是0x04、0000004或4.0-结果都是一样的-我不理解您在评论中的“引号”