【发布时间】:2020-06-18 08:48:08
【问题描述】:
我想知道是否有办法清除或清空对象数组,例如我有这个对象数组,我从 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 我迭代 this.buttons 以在我的应用程序中创建一些动态内容,但是当我的 firestore 数据库发生更改并且快照更新它时,我得到了重复项,我希望清除对象数组在从 Firestore 更新之前,所以我没有重复,但它不起作用,到目前为止我已经尝试过:
this.arrObj = [{}]
this.arrObj = [] //This option leaves me with no way to push the array of objects
this.arrObj.length = 0
无论我使用哪种方法,我都无法正确更新对象数组,第一次它可以很好地从 firestore 收集数据,但是一旦我更新数据库,我就会得到重复。
提前感谢任何帮助或提示
【问题讨论】:
-
你试过了吗?什么不起作用?
-
arrObj = []或arrObj .length=0 -
arrObj = [{}]的意义何在?这和arrObj.length=0有什么不同? -
@YevgenGorbunkov 设置
arrObj.length=0会删除arrObj中的所有条目,而arrObj = [{}]会使用包含单个空对象的数组覆盖变量。对先前arrObj的所有其他引用都不受此“更新”的影响。这与将您当前的汽车恢复为新的与再次购买同一辆车基本相同。加上[{}]不是空数组。 -
@OP 给出了我上面的解释,你到底想完成什么?你想清除那个确切的数组吗?或者你想“恢复”变量?那么索引 0 处的空对象呢?
标签: javascript arrays vue.js arrayobject