Если вы просто хотите отфильтрованный массив объектов mov ie с tmdb: Score> = 8.0, вот фрагмент для демонстрации (Обратите внимание, что я смоделировал объект в том же формате, что и у вас с массивом items
только из двух почти идентичных объектов, один с показателем> 8,0 и один с показателем <8,0 с целью демонстрации): </p>
const searchResult = {
"total_results": 27476,
"items": [
{
"jw_entity_id": "ts80908",
"id": 80908,
"title": "A Very English Scandal",
"full_path": "/us/tv-show/a-very-english-scandal",
"full_paths": {
"SHOW_DETAIL_OVERVIEW": "/us/tv-show/a-very-english-scandal"
},
"poster": "/poster/60368458/{profile}",
"original_release_year": 2018,
"tmdb_popularity": 3.422,
"object_type": "show",
"offers": [
{
"type": "aggregated",
"monetization_type": "flatrate",
"provider_id": 9,
"currency": "USD",
"subtitle_languages": [
"en"
],
"presentation_type": "sd",
"element_count": 1,
"new_element_count": 1,
"date_provider_id": "2019-09-14_9",
"date_created": "2019-09-14"
},
{
"type": "aggregated",
"monetization_type": "flatrate",
"provider_id": 9,
"currency": "USD",
"subtitle_languages": [
"en"
],
"presentation_type": "hd",
"element_count": 1,
"new_element_count": 1,
"date_provider_id": "2019-09-14_9",
"date_created": "2019-09-14"
}
],
"scoring": [
{
"provider_type": "imdb:score",
"value": 7.8
},
{
"provider_type": "tmdb:popularity",
"value": 3.422
},
{
"provider_type": "tmdb:score",
"value": 8.1
}
]
},{
"jw_entity_id": "ts80909",
"id": 80908,
"title": "Some Other Title",
"full_path": "/us/tv-show/a-very-english-scandal",
"full_paths": {
"SHOW_DETAIL_OVERVIEW": "/us/tv-show/a-very-english-scandal"
},
"poster": "/poster/60368458/{profile}",
"original_release_year": 2018,
"tmdb_popularity": 3.422,
"object_type": "show",
"offers": [
{
"type": "aggregated",
"monetization_type": "flatrate",
"provider_id": 9,
"currency": "USD",
"subtitle_languages": [
"en"
],
"presentation_type": "sd",
"element_count": 1,
"new_element_count": 1,
"date_provider_id": "2019-09-14_9",
"date_created": "2019-09-14"
},
{
"type": "aggregated",
"monetization_type": "flatrate",
"provider_id": 9,
"currency": "USD",
"subtitle_languages": [
"en"
],
"presentation_type": "hd",
"element_count": 1,
"new_element_count": 1,
"date_provider_id": "2019-09-14_9",
"date_created": "2019-09-14"
}
],
"scoring": [
{
"provider_type": "imdb:score",
"value": 7.8
},
{
"provider_type": "tmdb:popularity",
"value": 3.422
},
{
"provider_type": "tmdb:score",
"value": 7.9
}
]
}]
}
const desiredMovies = searchResult.items.filter(movie => {
let tmdbScoring = movie.scoring.find(scoringObj => scoringObj.provider_type==="tmdb:score");
return tmdbScoring && tmdbScoring.value>=8.0;
})
console.log(desiredMovies);
Кроме того, я заметил, что в коде, который вы добавили, возникает проблема, которая может объяснить, почему вы получаете все фильмы.
В приведенном ниже коде вы печатаете searchResult
один раз для каждого найденного вами успешного результата, который является объектом, который содержит счетчик и весь массив items
, так что вы увидите все фильмы в вашей структуре данных.
//searchResult is the object that contains the entire array "items"
searchResult.items.map(function(movie){
movie.scoring.filter(score =>{
if(score.provider_type ==="tmdb:score" && score.value > 8) {
//the variable searchResult has scope here so it will contain the entire list
print_result("search", searchResult)
}
})
})
Отказ от ответственности : следующее подразумевается только как конструктивная критика.
Кроме того, я вполне уверен, что вы используете .map
и .filter
неверно. Обратные вызовы, предоставленные им, должны возвращать логическое значение, чтобы сами функции .map
или .filter
могли возвращать новый массив (важно отметить, что .map
и .filter
не влияют на исходный массив). Предоставленные обратные вызовы не только не возвращают логическое значение, но результаты самой карты или фильтра не сохраняются в переменной. Итак, я предлагаю вам взглянуть на документы по этим функциям высшего порядка, чтобы лучше понять, как они работают:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter
Поэтому я предлагаю вам создать функцию, которая возвращает отфильтрованный список фильмов из списка items
вашего объекта и печатает его в целом.