在Vue JS中有反应性来存储所做的所有更改吗?

时间:2018-12-14 21:05:54

标签: javascript arrays object vue.js

我正在尝试将单独的对象存储到一个数组中,问题是我不确定如何也可以存储先前的输入-我的数据被覆盖了。我对问题进行了简短记录,希望可以使事情变得清楚:https://vimeo.com/306470918

这是代码的小提琴: https://jsfiddle.net/h64wafkp/46/

我可以将所有内容都放入一个现有的数组中,但是这样会格式化所有错误,并且我受困于arrays-inside-an-array类型的格式,这使事情搞砸了。我想保留

的格式
 [
  {
    "id": 3,
    "user_id": 2, // notice id is user 2
    "date": "2018-12-04",
    "duration": 10
  },
  {
    "id": 4,
    "user_id": 1, // another user id in the same array
    "date": "2018-12-13",
    "duration": 41
  },
] 

不是

[
  [
    {
      "id": 2,
      "user_id": 1,
      "date": "2018-12-03",
      "duration": 13
    },
    {
      "id": 1,
      "user_id": 1,
      "date": "2018-12-02",
      "duration": 13
    },
  ]
] 

如果我做类似Object.assign({}, object1, object2)的事情,那不会将所有内容存储在一个大数组中,而是存储在一个大对象中,所以我也不能这样做。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

如果我正确理解了您的问题,则需要将当前设置的所有小时数读入一个数组中。在您的小提琴中,最后一行是.load-screen{ background-color: white; display: flex; justify-content: center; align-items: center; text-align: center; opacity: 1; position: fixed; margin-left: auto; z-index: 1000; width: 100%; height: 100vh; transition: 0.4s ease-in; } .loading-image{ display: block; width: 100%; // margin-top: 15vw; The margins aren't necessary // margin-left: auto; The margins aren't necessary animation-name: loadscreen; animation-duration: 3.5s; animation-iteration-count: infinite; } 行,仅返回当前用户的小时数。

如果您想阅读所有用户的所有时间,则需要将它们汇总在一起-我建议使用this.newHours = user.hours,结果是:

reduce

this.newHours = this.users.reduce((hours, user) => [...hours, ...user.hours], []); 的12月5日的输入中添加一个4,结果将是:

nas