Come filtrare le chiavi di un object con lodash?

Ho un object con alcune chiavi e voglio mantenere solo alcune chiavi con il loro valore?

Ho provato con il filter :

 var data = { "aaa":111, "abb":222, "bbb":333 }; var result = _.filter(data, function(value, key) { return key.startsWith("a"); }) console.log(result); 

Ma stampa un array:

 [111, 222] 

Che non è quello che voglio

Come si fa con lodash? O qualcos’altro se lodash non funziona?

Demo dal vivo: http://jsbin.com/moqufevigo/1/edit?js,output

Lodash ha una funzione _.pickBy che fa esattamente quello che stai cercando.

 var thing = { "a": 123, "b": 456, "abc": 6789 }; var result = _.pickBy(thing, function(value, key) { return _.startsWith(key, "a"); }); console.log(result.abc) // 6789 console.log(result.b) // undefined 
  

Basta cambiare il filtro per omitBy

  var result = _.omitBy(data, function(value, key) { return !key.startsWith("a"); }) 

Ecco un esempio usando lodash 4.x:

 var data = { "aaa":111, "abb":222, "bbb":333 }; var result = _.pickBy(data, function(value, key) { return key.startsWith("a"); }); console.log(result); // Object {aaa: 111, abb: 222} 
  Open your javascript console to see the output.