Javascript 与此筛选函数相比是否有任何错误,因为它根本不返回任何内容

Javascript 与此筛选函数相比是否有任何错误,因为它根本不返回任何内容,javascript,jquery,arrays,filter,Javascript,Jquery,Arrays,Filter,我正在尝试筛选fullcalendar上的一些事件,但我无法获得想要的适当对象。我正在使用函数过滤器,如下代码所示: 我尝试先使用===然后使用==因为我希望值相同。我甚至尝试使用&&来验证是否应该使用单个字符串而不是数组 document.addEventListener('DOMContentLoaded', function () { $.ajax({ type: 'GET', url: "connection with A

我正在尝试筛选fullcalendar上的一些事件,但我无法获得想要的适当对象。我正在使用函数过滤器,如下代码所示:

我尝试先使用===然后使用==因为我希望值相同。我甚至尝试使用&&来验证是否应该使用单个字符串而不是数组

 document.addEventListener('DOMContentLoaded', function () {
        $.ajax({
            type: 'GET',
            url: "connection with API",
            success: function (doc) {
                        listData = doc;
                        console.log("done");
                        $(doc).each(function (idata) {
                            var dt = new Date(doc[idata].EDA);
                            dt.setHours(dt.getHours() + 1);
                            var dt2 = new Date(doc[idata].EDA);
                            dt2.setMinutes(dt2.getMinutes() + 30);
                            var dt3 = new Date(doc[idata].EDA);
                            dt3.setMinutes(dt3.getMinutes() + 30);
                            if (doc[idata].REFERENCE_NUMBER.split("/")[1] == "R9" && doc[idata].CARRIER_CODE_FOR_DISPLAY == "SESE") {
                                allEvents.push({
                                    id: 1,
                                    resourceId: '2',
                                    title: doc[idata].CARRIER_CODE_FOR_DISPLAY + " - " + doc[idata].TRAILER_ID.split("/")[1],
                                    start: doc[idata].EDA,
                                    end: dt,
                                    allday: false,
                                    backgroundColor: '#041E42',
                                    textColor: '#FAFAFA',
                                });
                            }
                            if (doc[idata].REFERENCE_NUMBER.split("/")[1] == "B" && doc[idata].CARRIER_CODE_FOR_DISPLAY == "SESE") {
                                allEvents.push({
                                    id: 2,
                                    resourceIds: ['1','3', '4'],
                                    title: doc[idata].CARRIER_CODE_FOR_DISPLAY + " - " + doc[idata].TRAILER_ID.split("/")[1],
                                    start: doc[idata].EDA,
                                    end: dt3,
                                    allday: false,
                                    backgroundColor: '#041E42',
                                    textColor: '#FAFAFA',
                                });

                            }
                            if (doc[idata].REFERENCE_NUMBER.split("/")[1] == "C" && doc[idata].CARRIER_CODE_FOR_DISPLAY == "SESE") {
                                allEvents.push({
                                    id: 2,
                                    resourceIds: ['3','4'],
                                    title: doc[idata].CARRIER_CODE_FOR_DISPLAY + " - " + doc[idata].TRAILER_ID.split("/")[1],
                                    start: doc[idata].EDA,
                                    end: dt2,
                                    allday: false,
                                    backgroundColor: '#041E42',
                                    textColor: '#FAFAFA',
                                });

                            }

                            if (doc[idata].REFERENCE_NUMBER.split("/")[1] == "R4" && doc[idata].CARRIER_CODE_FOR_DISPLAY== "SESE") {
                                allEvents.push({
                                    id: 2,
                                    resourceId: '1',
                                    title: doc[idata].CARRIER_CODE_FOR_DISPLAY + " - " + doc[idata].TRAILER_ID.split("/")[1],
                                    start: doc[idata].EDA,
                                    end: dt,
                                    allday: false,
                                    backgroundColor: '#041E42',
                                    textColor: '#FAFAFA',
                                });

                                }
                            if (doc[idata].REFERENCE_NUMBER.split("/")[1] == "KD") {
                                allEvents.push({
                                    id: 3,
                                    resourceId: '6',
                                    title: doc[idata].CARRIER_CODE_FOR_DISPLAY,
                                    start: doc[idata].EDA,
                                    end: dt,
                                    allday: false,
                                    backgroundColor: '#94A596',
                                    textColor: '#FAFAFA',
                                    height: ''

                                });
                            }

                        }); 
let eventus3 = allEvents.filter((evento) => {
                    return evento.resourceIds == ['3','4'];
                })

数组是做数据的指针,当你做像['1',2']=['1',2']这样的事情时,你在比较内存中两个不同的指针,因此你会得到false,即使内容是相同的。如果要比较两个数组,应循环遍历它们,查看每个元素是否等于另一个数组中的元素


希望这能有所帮助。

您不能这样比较阵列:

evento.resourceIds == ['3', '4'];
所包含的对象数组通过引用进行比较,即,仅当它们指向同一对象时,==或===才返回true。请注意,[1,2]=[1,2]为false

模拟数组的==的一种方法是比较它们的JSON表示,因此在本例中

JSON.stringify(evento.resourceIds) === JSON.stringify(['3', '4']);

不确定它是否是最好的,但可能是最简洁的。

我想要带有ResourceId的事件,但数组筛选器返回的我总是空的,无论它是或的副本