web-dev-qa-db-fra.com

Clés de la carte Lodash et valeurs sur un objet

Mon code:

const orig = {" a ":1, " b ":2}
let result = _.mapKeys(_.mapValues(orig, (v) => v + 1), (v, k) => k.trim())

résultat réel et souhaité = { "a": 2, "b": 3 }

Mais y a-t-il une meilleure façon de faire cela chez Lodashy? 

6
danday74

Cette solution utilise _.transform() , et est un peu plus courte. Je ne suis pas sûr que ce soit mieux que votre solution fonctionnelle.

const orig = {" a ": 1, " b ": 2 };

const result = _.transform(orig, (r, v, k) => r[k.trim()] = v + 1);

console.log(result);
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.4/lodash.min.js"></script>

8
Ori Drori

Que diriez-vous quelque chose comme ça? 

const orig = {" a ":1, " b ":2};

function test(object) {
  let out = {};

  _.forEach(object, function(value, key) {
    out[key.trim()] = value + 1;
  });

  return out;
}

console.log(test(orig));
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.4/lodash.min.js"></script>

1
mindlis

En utilisant réduire vous pouvez faire:

var obj = {" a ":1, " b ":2}

result = _.reduce(obj, (result, v, k) => {
  result[k.trim()] = v + 1
  return result
}, {})

console.log(result)
<script src="https://cdn.jsdelivr.net/npm/lodash@latest/lodash.min.js"></script>

réduire est plus familier mais la transformation IMO semble plus appropriée ici

1
danday74