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-结果都是一样的-我不理解您在评论中的“引号”