/ / Lodash usando pickBy invece di ciascuno - javascript, lodash

Lodash usando pickBy invece di ciascuno - javascript, lodash

Ciao, ho una domanda per refactificare il mio codice usando lodash, ho fatto un programma per calcolare la media dei numeri interi di un oggetto. Vorrei usare un _.pickBy invece di un _.each.

Questo è il mio programma con un _.each:

var my_obj = {a: 1, b:2, c: "foo", d: "bar", w:3, z:4};

function mean(obj) {
var temp=0;
var count=0;
_.each(obj, function(value, key){
if(_.isNumber(value)){
result +=  value
count += 1
}
})
return temp / count;
}
mean(my_obj)  //outputs is 2.5 in this exemple

Sono bloccato usando _isNumber con _.pickBy:

function mean(obj) {
var result = 0
return _.pickBy(obj, function(value, key){
return _.isNumber{(value)
// how to have the sum and divise by the number of integer objects ?
})
}

risposte:

2 per risposta № 1

Poiché si desidera una matrice di numeri e non un oggetto, utilizzare _.filter() con _.isNumber() per ottenere una matrice di numeri, quindi restituire il _.mean() dell'array:

function mean(obj) {
return _.mean(_.filter(obj, _.isNumber));
}

var my_obj = {a: 1, b:2, c: "foo", d: "bar", w:3, z:4};

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