Что-то не так по сравнению с этой функцией фильтра, потому что она вообще ничего не возвращает - PullRequest
1 голос
/ 04 апреля 2019

Я пытаюсь отфильтровать некоторые события в своем полном календаре, но не могу получить нужные объекты, которые я хочу.Я использую фильтр функций, как следующий код:

Сначала я попытался использовать ===, затем я использовал ==, потому что я хочу, чтобы значения были одинаковыми.Я даже пытался использовать &&, чтобы проверить, должен ли я использовать одиночные строки вместо массива

 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'];
                })

Ответы [ 2 ]

0 голосов
/ 04 апреля 2019

Вы не можете сравнивать массивы следующим образом:

evento.resourceIds == ['3', '4'];

Объекты (включая массивы) сравниваются по ссылке, то есть == (или ===) возвращает true, только если они указывают натот же объект.Обратите внимание, что [1,2]==[1,2] имеет значение false.

Один из способов имитировать == для массивов состоит в сравнении их представлений JSON, поэтому в этом примере

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

(Не уверен, что это лучший , но, вероятно, самый краткий).

0 голосов
/ 04 апреля 2019

Массивы - это указатели на данные, когда вы делаете что-то вроде ['1', '2'] == ['1', '2'], вы сравниваете два разных указателя в памяти, поэтому вы получите false, даже если содержимое одинаковое. Если вы хотите сравнить два массива, вы должны пройти через них и посмотреть, равен ли каждый элемент элементу в другом массиве.

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...