我有一个与此相似的对象:
obj = { name:"myobject", MON: 3, TUE: 5}
我正在尝试执行_.sum(_.values(obj))
并将该值推入数组this.hours.push(_.sum(_.values(obj)))
。
我期望像这样的[8]
数组(我之所以将其存储在数组中的原因是因为将来可能要解析多个对象)。我该如何实现?
答案 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>