_.sum(_。values(x)),如果x的值不全是数字

时间:2019-05-22 13:19:54

标签: javascript typescript lodash

我有一个与此相似的对象:

obj = { name:"myobject", MON: 3, TUE: 5}

我正在尝试执行_.sum(_.values(obj))并将该值推入数组this.hours.push(_.sum(_.values(obj)))

我期望像这样的[8]数组(我之所以将其存储在数组中的原因是因为将来可能要解析多个对象)。我该如何实现?

3 个答案:

答案 0 :(得分:1)

过滤掉非数字。

const obj = { name: "myobject", MON: 3, TUE: 5 };
const numbers = _.filter(obj, x => typeof x === 'number');
const total = _.sum(numbers);

答案 1 :(得分:1)

以防万一有人需要它,除了@mbojko答案之外,还添加了常规方法来做到这一点:

const obj = { name: "myobject", MON: 3, TUE: 5 };
var total = 0;
_.forOwn(obj, function(value) {
  if(typeof value === 'number')
    total += value;
});

答案 2 :(得分:0)

您可以使用_.sumBy()并为非数字值返回0:

const obj = { name:"myobject", MON: 3, TUE: 5}

const result = _.sumBy(_.values(obj), v => _.isNumber(v) ? v : 0)

console.log(result)
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.11/lodash.js"></script>