Loading...
dstoianov891 avatar dstoianov891 18 Точки

Java Script, Exercises "Object and Classes", task 4. Movies, Judge 40%

Здравейте, 

Имам проблем със задачата от упражнението 4. Movies.

Нулевия тест минава, но Judge ми дава само 40% и не мога да си открия грешката.

Ще съм много благодарен, ако някой помогне. 

Задача:

https://pastebin.com/dBQ1FwRs

Условие:

4.Movies

Write a function that stores information about movies. The info will be name, director, date. You can receive several types on input:

  • "addMovie {movie name}" – add the movie
  • "{movie name} directedBy {director}" – check if the movie exists and then add the director
  • "{movie name} onDate {date}" – check if the movie exists and then add the date

At the end print all the movies that have all the info (if the movie has no author, name or data, don’t print it) in JSON format.

Input

Output

[

'addMovie Fast and Furious',

'addMovie Godfather',

'Inception directedBy Christopher Nolan',

'Godfather directedBy Francis Ford Coppola',

'Godfather onDate 29.07.2018',

'Fast and Furious onDate 30.07.2018',

'Batman onDate 01.08.2018',

'Fast and Furious directedBy Rob Cohen'

]

{"name":"Fast and Furious","date":"30.07.2018","director":"Rob Cohen"}

{"name":"Godfather","director":"Francis Ford Coppola","date":"29.07.2018"}

Тагове:
0
JavaScript Fundamentals
willystyle avatar willystyle 2472 Точки
Best Answer

Грешките са доста, ето ти рефактор, ако нещо не е ясно питай:

function solve(input) {
    let movies = {};
    for (let i = 0; i < input.length; i++) {
        if (input[i].includes('addMovie')) {
            let movieName = input[i].replace(/addMovie\s*/, '');
            if (!movies.hasOwnProperty(movieName)) {
                movies[movieName] = { name: movieName };
            }
        } else if (input[i].includes('onDate')) {
            let [movieName, date] = input[i].split(/\s*onDate\s*/);
            if (movies.hasOwnProperty(movieName)) {
                movies[movieName]['date'] = date;
            }
        } else if (input[i].includes('directedBy')) {
            let [movieName, director] = input[i].split(/\s*directedBy\s*/);
            if (movies.hasOwnProperty(movieName)) {
                movies[movieName]['director'] = director;
            }
        }
    }
    for (const movieName in movies) {
        const movie = movies[movieName];
        if (
            movie.hasOwnProperty('name') &&
            movie.hasOwnProperty('date') &&
            movie.hasOwnProperty('director')
        ) {
            console.log(JSON.stringify(movie));
        }
    }
}

 

0
dstoianov891 avatar dstoianov891 18 Точки

Благодаря! Още са ми сложни тези обекти :)

1
slavib avatar slavib 0 Точки

AАз не виждам много смисъл в това да слагам обекат  movie = {} .  След като мога да създам инстанция с пропъртита но сетнати празни .

function movies(arr){
   let results=[];
   let movie={
      'name':'',
      'director':'',
      'date':''
   }
   for (let i = 0; i < arr.length; i++) {

      let arrAddMovies=arr[i].split(' ').filter(x=>x==='addMovie');
      if(arrAddMovies.length!==0){
         let arrmovie=arr[i].split('addMovie ')
         let movieName=arrmovie[1];
         movie.name=movieName;
         results.push(movie);
         movie={
            'name':'',
            'director':'',
            'date':''
         }
      }
      let arrDirector=arr[i].split(' ').filter(x=>x==='directedBy');
      if(arrDirector.length!==0){

         let split = arr[i].split(' directedBy ');
         let isexist=results.findIndex(e=>e.name===split[0]);

         if(isexist>=0){
            let splitElement = split[1];
            results[isexist].director= splitElement;
         }
      }
      let arrOnDate=arr[i].split(' ').filter(x=>x==='onDate');
      if(arrOnDate.length!==0){

         let result=arr[i].split(' onDate ');
         let isexist=results.findIndex(e=>e.name===result[0]);
         if(isexist>=0){
            let splitElement = result[1];
            results[isexist].date= splitElement;
         }
      }
   }
   let text=''
   for (let i = 0; i < results.length; i++) {
      if(results[i].director!=='' && results[i].date!==''){
         text+=JSON.stringify(results[i]);
      }
   }
   console.log(text)
}
mov
0
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.