你好我有一个问题要使用lodash重构我的代码,我做了一个程序来计算一个对象的整数平均值。我想使用_.pickBy而不是_.each。
这是我的程序_.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
我使用_isNumber和_.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 ?
})
}
答案 0 :(得分:2)
由于您需要一个数字数组而不是一个对象,因此使用_.filter()
和_.isNumber()
来获取数字数组,然后返回数组的_.mean()
:
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>
&#13;