-1
votes

Ajout de nouvelles valeurs aux clés d'objet existantes

J'ai un objet avec des valeurs de numéro attribuées à des touches xxx pré>

et je souhaite décrémenter chaque numéro à zéro afin que chaque touche a toutes les valeurs de cette plage, c'est-à-dire: P>

obj2 = {a : 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0
        b : 5, 4, 3, 2, 1, 0
        c : 6, 5, 4, 3, 2, 1, 0}


1 commentaires

obj2 n'est pas valide. Chaque valeur doit être une matrice, par ex. A: [10, 9, 8, ...], B: [5, 4, 3, ...] . En ce qui concerne l'objectif, vous avez mentionné que vous avez fait plusieurs tentatives; Pouvez-vous s'il vous plaît les partager? Nous préférerions grand chose à déboguer votre code existant par opposition à l'écrire à partir de zéro.


4 Réponses :


1
votes

Vous pouvez créer une matrice d'entrées d'objet, puis utiliser réduire () code> pour créer l'objet de résultat:

p>

const obj1 = {
  a: 10,
  b: 5,
  c: 6
};

const obj2 = Object.entries(obj1).reduce((a, [k, v]) => ({
  ...a,
  [k]: Array(v + 1).fill(0).map(_ => v--)
}), {});

console.log(obj2);


1 commentaires

Sainte Moly c'est incroyable. Merci, ça me conduisait fou !!



0
votes

let obj1 = {
  a: 10,
  b: 5,
  c: 6,
};

let obj2 = Object.fromEntries(Object.entries(obj1).map(([k, v]) => [k, [...Array(v)].map((_, i) => v - i)]));
console.log(obj2);


0 commentaires

0
votes

let obj1 = {a : 10, b : 5, c : 6}

let res = Object.entries(obj1).reduce((acc, cur) => {
    return Object.assign(acc, {[cur[0]]: Array.from(Array(cur[1]+1).keys()).reverse().join()})
}, {})
        
console.log(res)


0 commentaires

1
votes

Voici une solution beaucoup plus simple:

{
  a: [10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0],
  b: [5, 4, 3, 2, 1, 0],
  c: [6, 5, 4, 3, 2, 1, 0],
}


0 commentaires