Как я могу использовать циклы в моей функции datetime? - PullRequest
0 голосов
/ 06 февраля 2020

У меня есть кое-что в моей руке. Мне нужно показать эти данные как 11 месяцев назад от текущего месяца.

Я новичок js, мне нужно быть этим знакомством l oop.

мой массив mont:

month[0] = "January";
month[1] = "February";
month[2] = "March";
month[3] = "April";
month[4] = "May";
month[5] = "June";
month[6] = "July";
month[7] = "August";
month[8] = "September";
month[9] = "October";
month[10] = "November";
month[11] = "December";

для примера в феврале;

var mydata:[month[3],month[4],month[5],month[6],month[7],month[8],month[9],month[10],month[11],month[12],month[0],month[1]]

для примера в сентябре;

var mydata:[month[10],month[11],month[12],month[0],month[1],month[2],month[3],month[4],month[5],month[6],month[7],month[8]]

Ответы [ 3 ]

0 голосов
/ 06 февраля 2020

Я бы предложил создать новый массив с именем newMonths, чтобы изменить порядок месяцев. Это будет рекурсивная функция. Надеюсь, это поможет.

<script >

var d = new Date();
var n = d.getMonth();
var month = []; 

month[0] = "January";
month[1] = "February";
month[2] = "March";
month[3] = "April";
month[4] = "May";
month[5] = "June";
month[6] = "July";
month[7] = "August";
month[8] = "September";
month[9] = "October";
month[10] = "November";
month[11] = "December";

var newMonths = []; 

nextMonths =( current ) =>{
	if( newMonths.length===12  ){
	return null; 
	}else{
		let c = current < 12 ? current : 0 ;   
		let t = month[ c ] ;

	newMonths.push( t ); 
	return nextMonths( c + 1 ) ; 
	}

} 


	 nextMonths( n + 1 );
	 
	 console.log(  "current month  is"  , month[ n]  ); 
	 console.log(  "new Array "  , newMonths   );
	 
</script> 
0 голосов
/ 07 февраля 2020

A l oop не требуется, вы можете просто склеить массив с текущего месяца + 1 до конца месяца и добавить месяцы с начала до текущего месяца - 1, например,

/*
** @param {number} monthNumber - calendar month number in range 1 to 12
** @returns {Array} array of months from monthNumber + 1
**                  to monthNumber - 1
*/
function getMonthArray(monthNumber) {
  let month = [,"January", "February", "March", "April",
    "May", "June", "July", "August", "September",
    "October", "November", "December"];
  return month.splice(monthNumber + 1).concat(month.splice(1, monthNumber - 1));
}

console.log(getMonthArray(1));  // for January
console.log(getMonthArray(2));  // for February
console.log(getMonthArray(6));  // for June
console.log(getMonthArray(12)); // for December      

Требуется допуск в начале массива месяца, чтобы предотвратить попытки доступа к отрицательным индексам при соединении с monthNumber - 1.

Номер ввода месяца может быть изменено на нулевое индексирование, но я думаю, что календарное индексирование более подходит.

Если вы хотите передать ему объект Date (и использовать нулевые индексированные месяцы), тогда:

/*
** @param {Date} date - date to use for month number
** @returns {Array} array of months from month + 1 to month - 1
*/
function getMonthArray(date) {
  let m = date.getMonth();
  let month = [,"January", "February", "March", "April",
     "May", "June", "July", "August", "September",
     "October", "November", "December"];
  return month.splice(m+2).concat(month.splice(1, m));
}

console.log(getMonthArray(new Date(2020, 0)));  // for January
console.log(getMonthArray(new Date(2020, 1)));  // for February
console.log(getMonthArray(new Date(2020, 5)));  // for June
console.log(getMonthArray(new Date(2020, 11))); // for December      
console.log(getMonthArray(new Date())); // current month
0 голосов
/ 06 февраля 2020

Вы можете использовать модуль по этому %, который находит напоминание. Таким образом, вы никогда не выйдете за пределы своего массива месяца.

Вот краткий пример:

const month = [];
month[0] = "January";
month[1] = "February";
month[2] = "March";
month[3] = "April";
month[4] = "May";
month[5] = "June";
month[6] = "July";
month[7] = "August";
month[8] = "September";
month[9] = "October";
month[10] = "November";
month[11] = "December";

const getMonths = (fromMonth) => {
  const mydata = [];
  for(let i = 2; i <= 12; i++) { 
      mydata.push(month[(september + i) % 12]);
  }
  return mydata;
}
const september = 8;
console.log(getMonths(september));
...