C'est ce que j'ai essayé jusqu'à présent.
qui fonctionne, sauf que je ne peux pas comprendre comment changer les clés de la première et dernière date? p>
3 Réponses :
Utilisez le troisième argument p> i code> (index) dans la méthode de réduction.
const dates = [
'2020-06-24',
'2020-06-25',
'2020-06-26',
'2020-06-27',
'2020-06-28',
'2020-06-29',
'2020-06-30',
];
const dateArrayToObject = () => {
const dateObject = dates.reduce(
(acc, date, i) =>
Object.assign(acc, {
[date]: { selected: true, marked: true,
first: i === 0,
last: i === dates.length - 1
},
}),
{}
);
return dateObject;
};
console.log(dateArrayToObject())
Je suppose que c'est ce dont vous avez besoin.
p>
const dates = [ '2020-06-24', '2020-06-25', '2020-06-26', '2020-06-27', '2020-06-28', '2020-06-29', '2020-06-30', ]; var res= dates.reduce((acc, v, index, arr)=>{ acc = index === 0? {...acc, ...{[v] : {startingDay: true, marked: true}} } : index === arr.length-1 ? acc = {...acc, ...{[v] : {ending: true, marked: true}} } : acc = {...acc, ...{[v] : {selected: true, marked: true}} } return acc },{}) console.log(res)
Bien que j'ai besoin de garder cela un objet et non un tableau qui est un léger problème
Vous pouvez prendre {} au lieu de [] comme ACC code> et générer en conséquence le code
brillant. Merci
Utilisation de code> Carte CODE> Opération Vous pouvez transformer chaque objet avec quelques accessoires supplémentaires par exemple FirstElement code> et
laserelement code> et maintenir le reste des éléments car il retourne avec Nouveau tableau d'objets.
const dates = [
'2020-06-24',
'2020-06-25',
'2020-06-26',
'2020-06-27',
'2020-06-28',
'2020-06-29',
'2020-06-30',
];
dates.map((value, index) => {
const obj = {
selected: true,
marked: true
};
if (index == 0) {
obj.firstElement = true;
return obj;
}
else if (index == dates.length - 1) {
obj.lastElement = true;
return obj;
}
else {
return obj;
}
});
Quel est votre résultat attendu?
la première [Date]: {Début jour: True, marquée: True} et le dernier la première [Date]: {finGier: vrai, marqué: vrai},