tengo dos matrices
const weekDays = [ { label: 'Mon', name: 'Monday' }, { label: 'Tue', name: 'Tuesday' }, { label: 'Wed', name: 'Wednesday' }, { label: 'Thu', name: 'Thursday' }, { label: 'Fri', name: 'Friday' }, { label: 'Sat', name: 'Saturday' }, { label: 'Sun', name: 'Sunday' }, ]; y const daysOfWeek = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri']
Lo que quería lograr es mover array(daysOfWeek) un elemento hacia atrás, es decir, daysOfWeek = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu'] .
Para lograr eso, creé dicho código.
const selectedDaysOfWeek = weekDays.map(({label, name}, index, array) => { if (daysOfWeek.includes(label)) { return array[index - 1].label; } return '' });pero devuelve la etiqueta de indefinido.
Simplemente puede usar Array.prototype.pop() para eliminar el elemento del final y devolver ese elemento, luego use Array.prototype.unshift() para insertar un elemento al principio
const weekDays = [ { label: 'Mon', name: 'Monday' }, { label: 'Tue', name: 'Tuesday' }, { label: 'Wed', name: 'Wednesday' }, { label: 'Thu', name: 'Thursday' }, { label: 'Fri', name: 'Friday' }, { label: 'Sat', name: 'Saturday' }, { label: 'Sun', name: 'Sunday' }, ]; const lastElement = weekDays.pop(); // get last element weekDays.unshift(lastElement); // get new array that last element is first one let finalResult = weekDays.map(x => x.label) // get only names of week days from object console.log(finalResult)EDITAR : de acuerdo con las necesidades del OP
const weekDays = [ { label: 'Mon', name: 'Monday' }, { label: 'Tue', name: 'Tuesday' }, { label: 'Wed', name: 'Wednesday' }, { label: 'Thu', name: 'Thursday' }, { label: 'Fri', name: 'Friday' }, { label: 'Sat', name: 'Saturday' }, { label: 'Sun', name: 'Sunday' }, ]; function getWeeks(arr) { return [arr[arr.length - 1], ...arr.slice(0, arr.length - 1)]; } console.log(getWeeks(['Tue', 'Wed', 'Thu'])); console.log(getWeeks(weekDays));Supongo que tu solución es:
const weekDays = [ { label: 'Mon', name: 'Monday' }, { label: 'Tue', name: 'Tuesday' }, { label: 'Wed', name: 'Wednesday' }, { label: 'Thu', name: 'Thursday' }, { label: 'Fri', name: 'Friday' }, { label: 'Sat', name: 'Saturday' }, { label: 'Sun', name: 'Sunday' }, ]; let daysOfWeek = ['Wed', 'Thu', 'Fri'] const firstDayIndex = weekDays.findIndex(day => day.label === daysOfWeek[0]) // get current day index daysOfWeek.unshift(weekDays[(firstDayIndex || weekDays.length) - 1].label) // add previous day by index daysOfWeek.pop() // remove last day console.log(daysOfWeek) // // ['Tue', 'Wed', 'Thu'], here we goconst result = [weekDays[weekDays.length-1],...weekDays.slice(0,weekDays.length-1)].slice(0,5)