1
votes

Javascript - Remplacement de toutes les chaînes à l'intérieur de l'objet

{r: {e: {c: {u: {r: "nois", string: "cba"}}}}}

1 commentaires

Qu'avez-vous déjà essayé?


3 Réponses :


0
votes

Vous écrivez une boucle récursive qui itère sur toutes les valeurs de l'objet, puis split , reverse , join la valeur si la valeur est une chaîne.


0 commentaires

2
votes

Vous pouvez adopter une approche récursive et rechercher des objets ou des chaînes.

const reverseStrings = object => {
    Object.entries(object).forEach(([k, v]) => {
        if (v && typeof v === 'object') reverseStrings(v);
        else if (typeof v === 'string') object[k] = Array.from(v).reverse().join('');
    });
}

var object = { r: { e: { c: { u: { r: "sion", string: "abc" } } } } };

reverseStrings(object);

console.log(object);


1 commentaires

C'était ce que je cherchais, merci!



0
votes

Vous pouvez le faire avec une fonction récursive qui passera par les entrées d'objet de l'objet courant et utilisera .reduce pour le remettre dans objet :

const obj = { r: { e: { c: { u: { r: "sion", string: "abc" } } } } };

const reverseStrings = obj => {
  return Object.entries(obj).reduce((acc, [k, v]) => {
    if(typeof v === "object"){
      acc[k] = reverseStrings(v);
    }
    else{
      acc[k] = [...v].reverse().join('');
    }

    return acc;
  }, {});
}

const result = reverseStrings(obj);

console.log(result)


0 commentaires