怎么解决JS数组后面一项覆盖前面一项

我声明了一个数组,想在数组里添加对象,通过push添加对象,但不知道为什么,每次添加完打印出来的数据,永远只有一项,达不到那种不停的加进去的效果,就想做成下图的效果。
image.png

import Vue from "vue"
import Vuex from "vuex"
// import persistedstate from "vuex-persistedstate"
Vue.use(Vuex)
let stores = new Vuex.Store({
    state: [],
    mutations: {
        departureMutations(state, data) {
        }
    },
    actions: {
        departure(state, data) {
            let arr = []
            arr.push(data)
            let obj = {}
            let arr2 = []
            arr.forEach((item,index)=>{
                obj.evt = item.evt;
                obj.stt = item.stt;
                obj.action_time = item.action_time;
                arr2.push(arr2)
            })
            console.log(arr2)
            // localStorage.setItem("departure", JSON.stringify([...arr2]))
        }
    },
    
})
export default stores;

我尝试着循环遍历出每一项,加进一个新的数组里,但是这个新的数组也是这样

我希望能实现如下图效果
image.png

阅读 5.9k
2 个回答

你这个地方写错了

departure(state, data) {
            let arr = []
            arr.push(data)
            let obj = {}
            let arr2 = []
            arr.forEach((item,index)=>{
                obj.evt = item.evt;
                obj.stt = item.stt;
                obj.action_time = item.action_time;
                arr2.push(arr2)  //这个地方你写错了,你重新赋值了
            })
            console.log(arr2)
        }
departure(state, data) {
            let arr = []
            arr.push(data)
            let obj = {}
            let arr2 = []
            arr.forEach((item,index)=>{
                obj.evt = item.evt;
                obj.stt = item.stt;
                obj.action_time = item.action_time;
                arr2.push(arr2)
            })
            console.log(arr2)
            // localStorage.setItem("departure", JSON.stringify([...arr2]))
        }

从你的代码里看到了。arr 和 arr2 都是重新赋值的。那么就应该是只有当前次的呀。
你把 arr2 存在全局?或者state不就完成了

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题