Avez-vous une solution optimisée pour les éléments suivants.

Disons,

x = { users: [ {id: 1}, {id:2}, {id:3} ] }

Je veux créer une nouvelle clé avec les mêmes valeurs, la sortie devrait être,

{ users: { list: [ {id: 1}, {id:2}, {id:3} ], count: 3 }

Utiliser uniquement JS ou Underscore avec un code de ligne sans effort supplémentaire.

Je connais d'autres astuces pour faire de même, mais avons-nous une solution en ligne pour le même?
Aide appréciée ...
Merci.

0
BHARGAV 12 avril 2018 à 07:41

3 réponses

Meilleure réponse

Je ne sais pas pourquoi cela doit être une solution optimisée car il s'agit d'un simple problème de JavaScript simple:

let x = { users: [{ id: 1 }, { id: 2 }, { id: 3 }] };
let result = {
  users: {
    list: x.users,
    count: x.users.length
  }
};

console.log(result);
2
31piy 12 avril 2018 à 04:44

Bien sûr, il suffit de définir la propriété comme un objet

const obj = {
  users: [{
    id: 1
  }, {
    id: 2
  }, {
    id: 3
  }]
};
obj.users = { list: obj.users, count: obj.users.length };
console.log(obj);

Je recommande de se concentrer sur la clarté du code plutôt que sur la conservation en ligne

2
CertainPerformance 12 avril 2018 à 04:43

Créez l'objet et affectez le tableau x à list. Cependant, count doit être un getter, car la longueur de list peut changer:

const x = { users: [{ id: 1 }, { id: 2 }, { id: 3 }] };
const result = {
  users: {
    list: x.users,
    get count() { return this.list.length; }
  }
};

console.log(JSON.stringify(result));

result.users.list.push({ id: 4 });

console.log(JSON.stringify(result));
3
Ori Drori 12 avril 2018 à 05:36