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 № 1Poiché 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>