Bonjour,
Quelqu'un sait commun recuperer la clé d'un objet au sein d'un objet ?

Ce que je fais

J'ai crée un objet auquel je veux attribuer la valeur de bordered à border

const propsZipe = {
    item: {
        validateStatus:'',
        label:"Code postal",
         help:""
    },
    input: {
        bordered: false,
        border:  // Je veux recuperer la valeur de ma clé bordered
    }
}

Quelqu'un sait comment s'y prendre ?

2 réponses


Mickael Christine
Réponse acceptée

Hello
Tu peux récup ta valeur en faisant

propsZipe.input.bordered

oh pardon j'ai mal lu, c'est plus ça dans ton cas je penses

const propsZipe = {
  item: {
    validateStatus: "",
    label: "Code postal",
    help: "",
  },
  input: {
    bordered: false,
    border: null, // Je veux recuperer la valeur de ma clé bordered
  },
};
// tu assignes ta clé border avec la valeur de bordered
propsZipe.input.border = propsZipe.input.bordered;

Un petit lien pour en apprendre un peu plus je penses que tu devrais commencer par la
https://developer.mozilla.org/fr/docs/Web/JavaScript/Guide/Utiliser_les_objets

Ce que tu demandes me semble impossible.
Tu essaies de récupérer la valeur d'une propriété d'un objet en cours de création.
L'objet n'est pas en mémoire, ses propriétés ne sont donc pas accessibles.
Donc tenter de faire propsZipe.input.bordered ou this.input.bordered à l'intérieur même de cet objet te renverra dans tous les cas une erreur.

La seule solution est effectivement d'assigner la valeur de border hors de l'objet lui-même.

Si ton seul soucis est de t'assurer que lorsque tu crées l'objet, une valeur par défaut soit appliquée à border et qu'il s'agit de la valeur définit dans bordered ; alors tu peux résoudre ton problème à l'aide du pattern Factory:

// Factory appliqué uniquement à l'input
function inputFactory (bordered) {
    return {
        "bordered": bordered
        "border": bordered
    }
}
// Factory appliqué à l'ensemble de l'objet
function propsZipeFactory(validateStatus, label, help, bordered) {
    return {
        item: {
            "validateStatus": validateStatus,
            "label": label,
            "help": help,
        },
        "input": inputFactory(borered),
    }
}

Maintenant quand tu créés un objet propsZipe, construit-le à l'aide de la Factory et tu t'assureras qu'il soit toujours dans un état cohérent.