gpt4 book ai didi

javascript - 检查数组中是否有任何项等于该值

转载 作者:太空宇宙 更新时间:2023-11-04 16:14:54 25 4
gpt4 key购买 nike

此函数将用户记录为已阅读该页面,并在用户单击下一页时触发。

它首先订阅数据库并检索用户已阅读的所有页面的列表。

我的目标是只记录用户未读过的页面,例如数据库中没有。

如果从数据库返回的列表包含与刚刚读取的页面相同的页码,则此函数不会将页面记录为正在读取。

但是,这只适用于第一次单击,然后如果我再次返回同一页面并单击“下一步”,它会将页码记录到数据库中...

有关如何修复此错误的任何建议,需要另外关注此代码,我知道它很简单......干杯!

logAsWatched() {
let uid = this.windowRef.nativeWindow.firebase.auth().currentUser.uid;
this.projectId = this.uidpage.project.id;
this.subscription = this.af.database.list(`pagelogs/${uid}/${this.projectId}`).subscribe(
data => {
console.dir(data);
if (data.length >= 1) {
let pagelogArray = [];
for (let i = 0; i < data.length; ++i) {
let pageNumber = data[i];
pagelogArray.push(pageNumber);
}
console.log('pagelogArray', pagelogArray);
console.log('page order', this.pageOrder);

let newArray = [];

for (let i = 0; i < pagelogArray.length; ++i) {
newArray.push(pagelogArray[i].pNumber);
}
console.log(`newArray : ${newArray}`);
if (!newArray.indexOf(this.pageOrder)) {
console.log('page has allready been logged');
} else {
console.log('logging this page as watched');
this.setLogAsWatchedData();
}
} else {
console.log('No page logs have been added');
this.setLogAsWatchedData();
}
}, (error) => { console.log(`page log error: ${error}`); }
);

}

  setLogAsWatchedData() {
this.subscription.unsubscribe();
let uid = this.windowRef.nativeWindow.firebase.auth().currentUser.uid;
this.windowRef.nativeWindow
.firebase.database().
ref(`pagelogs/${uid}/${this.projectId}`)
.push().set({ pNumber: this.pageOrder });

}

最佳答案

我想你可以看看如何使用过滤器[ https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter] ,列出记录为已读和未读的页面。

关于javascript - 检查数组中是否有任何项等于该值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41152773/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com