Javascript 如果数组中的值不是';不存在于另一个数组中
我有一个Ember应用程序,我正在用它构建一个通知系统,如果通知被我的用户取消,我会将通知UUID存储在我的cookie中,这样它就不会再次显示 一个月后,我的通知被从数据库中删除,我试图做的是检查我的数据库,获取所有通知的数组,然后将UUID与我的Cookie数组进行比较 如果我的cookies数组中存在UUID,而我的数据库中不存在UUID,我希望将其从cookies数组中删除 这是我的密码Javascript 如果数组中的值不是';不存在于另一个数组中,javascript,arrays,cookies,ember.js,Javascript,Arrays,Cookies,Ember.js,我有一个Ember应用程序,我正在用它构建一个通知系统,如果通知被我的用户取消,我会将通知UUID存储在我的cookie中,这样它就不会再次显示 一个月后,我的通知被从数据库中删除,我试图做的是检查我的数据库,获取所有通知的数组,然后将UUID与我的Cookie数组进行比较 如果我的cookies数组中存在UUID,而我的数据库中不存在UUID,我希望将其从cookies数组中删除 这是我的密码 this.get('userNotificationServices').fetch().then(
this.get('userNotificationServices').fetch().then(allNotifications => {
if (this.getCookie("dismissed-notifications")) {
var notificationIdsInCookie = this.getCookie("dismissed-notifications").split(',');
notificationIdsInCookie.forEach(function (value) {
var index = allNotifications.findIndex(x => x.id === value);
if (index === -1) {
notificationIdsInCookie.splice(index, 1);
}
});
this.setCookie("dismissed-notifications", notificationIdsInCookie);
}
});
目前,它似乎正在删除数组中的错误值,例如,它删除最后一个数组值而不是第一个,然后从数组中删除每个值。我的过滤有问题吗/我的逻辑有问题吗
多谢各位
我强烈建议不要使用
foreach
循环并创建一个新的
您可以使用
Array.prototype.filter
:
notificationIds=[1,2,3,4,5,6,7,8,9,10];
所有通知=[1,3,10];
filtered=notificationIds.filter(id=>!allNotifications.includes(id));
console.log(过滤)代码>
我强烈建议不要使用
foreach
循环并创建一个新的
您可以使用Array.prototype.filter
:
notificationIds=[1,2,3,4,5,6,7,8,9,10];
所有通知=[1,3,10];
filtered=notificationIds.filter(id=>!allNotifications.includes(id));
console.log(过滤)代码>