首页 > 解决方案 > 为什么 lodash 的 _.sum() 函数会使 Vuejs 对象失败

问题描述

我正在使用 Vuejs 和 Lodash,并且我有一个计算属性,它只是对集合的属性求和。我以前用过_.sum()这个,但是当我将它与 vuejs vm 一起使用时,它似乎只是连接字符串[object Object]

用以下代码制作了一个 jsfiddle

new Vue({
  el: "#app",
  data: {
    todos: [
      { text: "Learn JavaScript", time: 5 },
      { text: "Learn Vue", time: 10 },
      ]
  },
  computed: {
    additup() { return _.sum(this.todos, todo => todo.time ) },
    additup2() { return _.sum(this.todos, function (todo) {
      return parseInt(todo.time);
    })} },
    additup3() { 
      var t = 0; 
      _.each(this.todos, function(todo) { t+=todo.time; }); 
      return t; 
    }
  }
})

输出是:

方法 1 给出:[object Object][object Object]
方法 2 给出:[object Object][object Object]
方法 3 给出:15

有没有办法解决_.sum()?或者一种方法来解决我对它为什么不起作用的理解;-)

标签: javascriptvue.jslodash

解决方案


试试这个:

additup() { return _.sum(this.todos.map(todo => todo.time)) },

推荐阅读