0
votes

Comment convertir un tableau en un objet avec des clés différentes sur les premier et le dernier tableau?

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? xxx


2 commentaires

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},


3 Réponses :


1
votes

Utilisez le troisième argument i code> (index) dans la méthode de réduction.

p>

 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())


0 commentaires

2
votes

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)


3 commentaires

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 et générer en conséquence le code


brillant. Merci



0
votes

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;
            }
});


0 commentaires