Где я допустил ошибку, изменив свой поисковый фильтр? И как это исправить? - PullRequest
0 голосов
/ 10 ноября 2019

У меня есть список самолетов, вылетающих или прибывающих в аэропорт, и у меня также был фильтр поиска, в котором я вводил время прибытия или вылета и фильтровал самолеты. Я делаю это, используя свойство actual моего API. Но мне нужно было изменить свой поиск. Теперь мне нужно выполнить поиск по номеру рейса - свойству planeTypeID.code моего API. Но когда я его поменял, перестал показывать список самолетов. В чем моя ошибка и как ее исправить?

Я просто взамен actual везде написал ["planeTypeID.code"] и метод удаления: .split("-").reverse().join("-")

Старая версия:малая часть plane.js (редуктор)

case "RUN_FILTER":
      var newData = state.data[action.shift || state.shift].filter(x => {
        return (
          x.actual &&               
          x.actual.includes(         
            state.day
              .split("-")           
              .reverse()             
              .join("-")               
          )
        );
      });

    case "LOAD_DATA_END":
      var newData = action.payload.data[state.shift].filter(x => {
        return (
          x.actual &&                      
          x.actual.includes(                   
            action.payload.day
              .split("-")                             
              .reverse()                
              .join("-")                 
          )
        );
      });


малая часть app.js (основной компонент)

export function searchFilter(search, data) {
  return data.filter(n => n.actual.toLowerCase().includes(search)); 
}

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

Новая версия:

small part aircraft.js (редуктор)

    case "RUN_FILTER":

      var newData = state.data[action.shift || state.shift].filter(x => {
        return (
          x["planeTypeID.code"] &&                   // Сhange 
          x["planeTypeID.code"].includes(            // Сhange 
            state.day
                                                      // delete                                
          )
        );
      });
      return Object.assign({}, state, {

    case "LOAD_DATA_END":
      var newData = action.payload.data[state.shift].filter(x => {
        return (
          x["planeTypeID.code"] &&                   // Сhange        
          x["planeTypeID.code"].includes(            // Сhange   
            action.payload.day
                                                     // delete                                    
          )
        );
      });

small part app.js (основной компонент)


export function searchFilter(search, data) {
  return data.filter(n => n["planeTypeID.code"].toLowerCase().includes(search)); // Сhange   
}


Весь код проекта в песочнице:https://codesandbox.io/s/redux-ant-design-filter-table-column-with-slider-jj6mu

1 Ответ

1 голос
/ 10 ноября 2019

Примером значения x["planeTypeID.code"] является "B734", из state.day "23-08-2019" => это 2 разных поля => вы получите пустой массив при фильтрации по x["planeTypeID.code"].includes(state.day) ¯ \_ (ツ) _ / ¯

После отладки с помощью комментариев наиболее вероятное решение:

x["planeTypeID.code"].toLowerCase().includes(action.search || state.search)

Я рекомендую Начать с отладки JavaScript как общий первый шаг к вопросам, которые начинаются с:

Где я допустил ошибку ...

... до публикации в переполнение стека.

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