2017-04-22 34 views
0

这里是我的数组:[2017, 04, 31]做数学题到一个特定的元素/值数组

,你可以看到,这是今天的日期。但它不是真正的今天的日期,因为我们必须减去-1的月份。所以我需要最终的结果是:[2017, 03, 31]。我试过.map(),但那是元素/值在数组中。这里是例子:

var array = [2017, 04, 31]; 

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

我怎么能做到这一点,从-1月(04),所以这将是[2017, 03, 31]

+1

' array [1] - = 1' – Dummy

+2

*“that is today date”* - 不,不是。另外,你不能把'04'作为一个数字,如果你想保持前导零,它必须是一个字符串'“04”'。 – nnnnnn

+0

04是一个八进制数,在这种情况下它与4相同 - 您可能希望通过删除前导零来切换到十进制符号。 –

回答

0

获取和设置有效日期,可以在形式yearmonth这是基于0,date.toJSON().replace()使用Date构造与RegExp/(\d+)/g, "'$1'"包围各一套(带引号)数字; .slice()使用参数010获取YYYY-MM-DD部分日期.split()并使用参数"-"获取表示有效日期的字符串数组。

无法获得[2017, 04, 31]["2017", "04", "31"]作为有效日期。四月有最多30个日期。

要获得在四月的最后一天最后日期在三月使用数组作为值作为参数设置为new Date()呼叫

var arr = [2017, 4, 30]; 
 

 
function dateAsArrayYYYYMMDD(array) { 
 
    return new Date(array.toString().replace(/(\d+)/g, "'$1'")) 
 
     .toJSON().slice(0, 10).split("-"); 
 
} 
 

 
// get last date in April as array of string values 
 
var date = dateAsArrayYYYYMMDD(arr); 
 

 
console.log(date); 
 
    
 
// set date reflecting last date in March, 
 
// assign to `date` variable identifier 
 

 
arr[1] -= 1; 
 
arr[2] += 1; 
 

 
date = dateAsArrayYYYYMMDD(arr); 
 

 
console.log(date);

+1

'04'是如何写一个'Number'值的有效方式,但是我仍然会因为被解释而避免它作为非严格模式下的八进制。 –

+0

@le_m不确定OP试图实现什么 – guest271314

+0

如果“输入”是“var array = [2017,04,31];' –

0

var array = [2017,04,22]; 
 
array[1] = 03; 
 
console.log(array);

+2

一个硬编码的新值,真的吗? – nnnnnn

+0

然后数组[1] = - 1 –

+1

原始数组是硬编码,所以为什么不只是硬代码3而不是4:p –

相关问题