Lodash使用pickBy代替每个

时间:2018-04-10 08:11:53

标签: javascript lodash

你好我有一个问题要使用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 ?
  })
}

1 个答案:

答案 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;
&#13;
&#13;