Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/474.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如果数组中的值不是';不存在于另一个数组中_Javascript_Arrays_Cookies_Ember.js - Fatal编程技术网

Javascript 如果数组中的值不是';不存在于另一个数组中

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(

我有一个Ember应用程序,我正在用它构建一个通知系统,如果通知被我的用户取消,我会将通知UUID存储在我的cookie中,这样它就不会再次显示

一个月后,我的通知被从数据库中删除,我试图做的是检查我的数据库,获取所有通知的数组,然后将UUID与我的Cookie数组进行比较

如果我的cookies数组中存在UUID,而我的数据库中不存在UUID,我希望将其从cookies数组中删除

这是我的密码

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(过滤)