2017-04-22 2 views
0

Voici mon tableau: [2017, 04, 31]faire des mathématiques à un élément spécifique/valeur dans le tableau

comme vous pouvez le voir, qui est la date d'aujourd'hui. mais ce n'est pas vraiment la date d'aujourd'hui parce que nous devons soustraire -1 au mois. donc j'ai besoin que le résultat final soit: [2017, 03, 31].

J'ai essayé avec .map() mais ce sont des éléments/valeurs dans le tableau. voici l'exemple:

var array = [2017, 04, 31]; 

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

comment puis-je faire cela et -1 du mois (04) il sera [2017, 03, 31]?

+1

' array [1] - = 1' – Dummy

+2

* "c'est la date d'aujourd'hui" * - Non ce n'est pas le cas. De plus, vous ne pouvez pas avoir '04' sous la forme d'un nombre, ce devrait être une chaîne' "04 "' si vous voulez garder le zéro initial. – nnnnnn

+0

04 est un nombre octal, qui dans ce cas est identique à 4 - vous pouvez passer à la notation décimale en supprimant le zéro initial. –

Répondre

0

Pour obtenir et définir la date de validité, vous pouvez utiliser Date constructeur sous forme year, month qui est base 0, date, .toJSON(), .replace() avec RegExp/(\d+)/g, "'$1'" pour entourer chaque série de chiffres avec des guillemets; .slice() avec les paramètres 0 et 10 pour obtenir YYYY-MM-DD partie de la date, .split() avec le paramètre "-" pour obtenir tableau de chaînes représentant une date valide.

Il n'est pas possible d'obtenir [2017, 04, 31] ou ["2017", "04", "31"] comme date valide. Avril a un maximum de 30 dates.

Pour obtenir cette dernière date en Avril et la dernière date en Mars en utilisant un tableau comme valeurs pour définir comme paramètres à new Date() appel

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' est une façon valide d'écrire une valeur' Number' mais je l'éviterais encore en raison de son interprétation comme octal en mode non strict. –

+0

@le_m Vous ne savez pas ce que l'OP essaie d'atteindre – guest271314

+0

pourquoi l'année et le jour finiraient comme des chaînes si l'entrée est 'var array = [2017, 04, 31];' –

0

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

+2

Une nouvelle valeur codée en dur, vraiment? – nnnnnn

+0

Puis array [1] = - 1 –

+1

le tableau original est codé en dur, alors pourquoi ne pas simplement le code dur 3 au lieu de 4: p –