如何在javascript | Firestore-Vuejs中清空或清除对象数组

如何在javascript | Firestore-Vuejs中清空或清除对象数组,javascript,arrays,vue.js,arrayobject,Javascript,Arrays,Vue.js,Arrayobject,我想知道是否有一种方法可以清除或清空对象数组,比如说我有一个对象数组,我从firebase firestore借用了它,我使用快照来实现这一点,下面是代码: let siteButtonsData = firebase.firestore() .collection('app_settings') .doc('dashboard') .collection('main_panel') .onSnapshot(doc => {

我想知道是否有一种方法可以清除或清空对象数组,比如说我有一个对象数组,我从firebase firestore借用了它,我使用快照来实现这一点,下面是代码:

let siteButtonsData = firebase.firestore()
        .collection('app_settings')
        .doc('dashboard')
        .collection('main_panel')
        .onSnapshot(doc => {
          doc.forEach(doc => {
            this.arrObj.push(doc.data())
          });
        })
然后正确填充我的对象数组,如下所示:

data() {
    return { 
      arrObj: [
       {
         action: 'one',
         id: 1,
         text: 'hello1'
       },
       {
         action: 'two',
         id: 2,
         text: 'hello2'
       },
       {
        action: 'three',
        id: 3,
        text: 'hello3'
       },
      ]
    }
}
使用v-for,我迭代了这个.button,在我的应用程序中创建了一些动态内容,但是当我的firestore数据库发生变化时,快照更新了它,我得到了重复项,我希望在从firestore更新之前清除对象数组,这样我就不会有重复项,但它不起作用,到目前为止我已经尝试过:

this.arrObj = [{}]
this.arrObj = [] //This option leaves me with no way to push the array of objects
this.arrObj.length = 0
无论我使用哪种方法,我都无法正确更新对象数组,第一次从firestore收集数据时,它很好地完成了收集数据的工作,但一旦我更新了数据库,我就得到了重复的数据


提前感谢您提供的任何帮助或提示

如果要清空整个数组并转储其所有元素,该怎么办

有两种方法可用于创建空数组或新数组

最简单、最快的方法是将数组变量设置为空数组:

var-ar=[1,2,3,4,5,6]//DoStuffar=[]//一个新的空数组


这可能会造成的问题是当您有对变量的引用时。对该变量的引用不会更改,它们仍将保留原始数组的值。当然,这可能会产生一个bug当使用阵列时,您始终需要确保Vue的反应系统捕捉到更改并更新视图。Vue会自动观察一些数组变异方法以确保更新,它们是推、弹出、移位、取消移位、拼接、排序和反转。 看

就你的例子而言,应该做的是:

让siteButtonsData=firebase.firestore .集合“应用程序设置” .doc'dashboard' .收藏“主面板” .onSnapshotdoc=>{ this.arrObj.0,this.arrObj.length; //我认为这也行得通: //this.arrObj=[]; doc.forEachdoc=>{ this.arrObj.pushdoc.data }; }
你试过了吗?什么不起作用?arrObj=[]或arrObj.length=0做arrObj=[{}]有什么意义?这与arrObj.length=0有何不同?@YevgenGorbunkov设置arrObj.length=0将删除arrObj中的所有条目,而arrObj=[{}]使用包含单个空对象的数组覆盖变量。对先前arrObj的所有其他引用不受此更新的影响。这基本上与恢复你现在的车看起来像新的和再次购买同一辆车是一样的。Plus[{}]不是空数组。@OP根据我上面的解释,您到底想实现什么?你想清除那个精确的数组吗?还是要还原变量?那么索引0处的空对象呢?这适用于数组,但不适用于对象数组,我更新了我的问题,更好地解释了发生了什么,谢谢!Vue的反应系统未捕获设置数组。长度=0,拼接中的第二个参数是什么?这适用于这种特定类型的数据,对吗?对于对象数组,请看以下内容:Splice将第一个参数作为起始索引,然后使用this.arrObj.lengthit删除第二个参数中给定的元素数。这意味着它将删除所有元素。这适用于任何值的数组,无论其对象数组是否为其他项。