Функция фильтра не возвращает значение

Я создаю API фильмов, используя Node и Express. Моя функция фильтрации не вернула значение, ниже мой код:

class MovieStore{
  constructor(){
    this.movieData = require('./db/database.json');
  }
  all(){
    return this.movieData;
  }
  findMovie(tittle){
    return this.movieData.filter(movie => movie.Tittle === tittle);
  }
}

Есть ли проблема с функцией фильтра? Он возвращает только [], даже если я передал значение params из URL.

Это мой json:

 [  
   {  
      "Title":"Guardians of the Galaxy Vol. 2",
      "Year":"2017",
      "Rated":"PG-13",
      "Released":"05 May 2017",
      "Runtime":"136 min",
      "Genre":"Action, Adventure, Comedy",
      "Director":"James Gunn",
      "Writer":"James Gunn"
   }
]

хм ... это опечатка? movie.Tittle?

Kevin B 18.10.2018 22:28

Если это опечатка, можно ожидать, что все movie.Tittle будут undefined, и поэтому фильтр вернет пустой массив, если только аргумент для findMovie не является также undefined.

Håken Lid 18.10.2018 22:30

Можете ли вы добавить немного данных из json

Pari Baker 18.10.2018 22:49

это мой файл json: [{"Название": "Стражи Галактики, том 2", "Год": "2017", "Оценка": "PG-13", "Выпущено": "05 мая 2017 г.", «Время выполнения»: «136 минут», «Жанр»: «Боевик, Приключения, комедия», «Режиссер»: «Джеймс Ганн», «Сценарист»: «Джеймс Ганн, Дэн Абнетт (по мотивам комиксов Marvel), Энди }]

Lee0ne 18.10.2018 22:57

Вы можете мне объяснить, что это за опечатка? как я могу это проверить?

Lee0ne 18.10.2018 22:59

@ Lee0ne Опечатка - это когда вы хотели напечатать одно, а набрали другое. Например, ваш объект содержит свойство Title, но вместо этого вы набрали Tittle.

Kevin B 18.10.2018 23:12

@ Кевин, я думаю, ты прав. Я проверил, что заголовок вернулся undefine. Как я могу исправить эту ошибку? Есть предложения? :)

Lee0ne 18.10.2018 23:31

Я нашел свою ошибку. Спасибо за помощь :)

Lee0ne 18.10.2018 23:44
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
2
8
51
2

Ответы 2

My filter function did not return the value ... It returns only []

Ваш код фильтра работает нормально, просто нужно исправить небольшую опечатку (выделено в комментарии ниже):

/* define our test database */
 const inMemoryDatabase = [  
   {  
      "Title":"Guardians of the Galaxy Vol. 2",
      "Year":"2017",
      "Rated":"PG-13",
      "Released":"05 May 2017",
      "Runtime":"136 min",
      "Genre":"Action, Adventure, Comedy",
      "Director":"James Gunn",
      "Writer":"James Gunn"
   },
   {  
      "Title":"Pacific Rim",
      "Year":"2013",
      "Director":"Guillermo del Toro",
      "Writer":"Travis Beacham"
   }
]

/* define your class */
class MovieStore{
  constructor(){
    this.movieData = inMemoryDatabase
  }
  
  all(){
    return this.movieData;
  }
  
  findMovie(tittle){
    return this.movieData.filter(movie => movie.Title === tittle); // <- just fixed your typo here; the json database was using key "Title".
  }
}

/* create instance of your MovieStore class */
const concreteMovieStore = new MovieStore()
console.info("ALL MOVIES IN STORAGE:\n", concreteMovieStore.all())

/* test filter function */
const movie = concreteMovieStore.findMovie("Guardians of the Galaxy Vol. 2")
console.info("SEARCH RESULT: ", movie)

Надеюсь это поможет. Ваше здоровье!

//in .db/database.json
module.exports = [{ 
  "Title":"Guardians of the Galaxy Vol. 2",
  "Year":"2017",
  "Rated":"PG-13",
  "Released":"05 May 2017",
  "Runtime":"136 min",
  "Genre":"Action, Adventure, Comedy",
  "Director":"James Gunn",
  "Writer":"James Gunn"
}];


const movieData  = require('./db/database.json');;
class MovieStore{
  constructor(){}
  all(){
    return movieData;
  }
  findMovie(tittle){
    return movieData.filter(movie => movie.Tittle.toLowerCase() === tittle.trim().toLowerCase());
  }
}

Попробуйте приведенный выше код, это решит вашу проблему.

Другие вопросы по теме