2017-04-22 67 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 –

相關問題