Неофит JS ищет помощь в завершении упражнения

1

Я изучаю JS, и мне нужно сделать следующее упражнение: что-то, что я написал, хотя и неверно, важно попробовать. Теперь, если кто-то может любезно помочь мне лучше понять, как правильно выполнять упражнения, чтобы понимать и учиться. В некоторых случаях я заперт, я написал псевдокод, но я не знаю, как превратить его в код, я также сделал синтаксические ошибки, но, как я уже сказал, я изучаю js в покое, а форумы - это мои единственные служба поддержки.

Первая проблема заключается в первой функции. Я не уверен, что я разработал его правильно, как аргументацию, так и синтаксис. чтобы увидеть консоль, что вышло, я списал функцию: calculateFoodOrder(); Он говорит мне, что жетонов нет.

/**
 * This function should calculate the total amount of pet food that should be
 * ordered for the upcoming week.
 * @param numAnimals the number of animals in the store
 * @param avgFood the average amount of food (in kilograms) eaten by the animals
 * 				each week
 * @return the total amount of pet food that should be ordered for the upcoming
 * 				 week, or -1 if the numAnimals or avgFood are less than 0 or non-numeric
 */
function calculateFoodOrder(numAnimals, avgFood) {
    var numAnimals = 10;
	var avgFood = numAnimals/7;
	var total = avgFood*7;
	
	if (Number(numAnimals || avgFood) < 0) and (isNaN(numAnimals || avgFood)){
		    console.log(-1);
	}
	
	return total;
}
calculateFoodOrder();

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

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

/**
 * Determines which day of the week had the most number of people visiting the
 * pet store. If more than one day of the week has the same, highest amount of
 * traffic, an array containing the days (in any order) should be returned.
 * (ex. ["Wednesday", "Thursday"]). If the input is null or an empty array, the function
 * should return null.
 * @param week an array of Weekday objects
 * @return a string containing the name of the most popular day of the week if there is only one most popular day, and an array of the strings containing the names of the most popular days if there are more than one that are most popular
 */
function mostPopularDays(week) {
    week = [Monday,Tuesday, Wednesday, Thursday, Friday,Saturday, Sunday];
	var weekdays = "";
	
	for (i=0; i<week.length; i++) {
		weekdays += week[i] + "<br>";
	}
	
	if (typeof week[i] === [] || week[i] === null) {
      return null;
	}
	
	/*if there is only one most popular day return "dayname";
      if there are more days than one that are most popular 
        return ["dayname","dayname","dayname"]*/
	
}

/**
 * A prototype to create Weekday objects
 */
function Weekday (name, traffic) {
    this.name = name;
    this.traffic = traffic;
}

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

**
 * Given three arrays of equal length containing information about a list of
 * animals - where names[i], types[i], and breeds[i] all relate to a single
 * animal - return an array of Animal objects constructed from the provided
 * info.
 * @param names the array of animal names
 * @param types the array of animal types (ex. "Dog", "Cat", "Bird")
 * @param breeds the array of animal breeds
 * @return an array of Animal objects containing the animals' information, or an
 *         empty array if the array lengths are unequal or zero, or if any array is null.
 */
function createAnimalObjects(names, types, breeds) {
    names = ["Lola", "Joy", "Elohim"];
	types = ["Dog", "Cat", "Bird"];
	breeds = ["Labrador", "Siamese", "Falco"];
	
	return {
		Animal = [["Lola", "Joy", "Elohim"], ["Dog", "Cat", "Bird"], ["Labrador", "Siamese", "Falco"]];
	}
}

/**
  * A prototype to create Animal objects
  */
function Animal (name, type, breed) {
     this.name = name;
     this.type = type;
     this.breed = breed;
}
  • 1
    По твоему вопросу сложно разобрать, где ты застрял. Прошу упомянуть об этом явно, а главное - по одному вопросу за раз .
  • 0
    Фрагмент стека предназначен только для запуска кода. Я только что отредактировал твой вопрос в простой код.
Показать ещё 2 комментария
Теги:
object
arrays
function

2 ответа

0

Чтобы ответить на ваш первый вопрос... вы не можете использовать слово "и" в своем коде, вы должны использовать &&. Также вы объявили свои параметры функцией, так что, что бы вы ни делали, она всегда будет возвращать тот же ответ, что не поможет сделать функцию повторно используемой. Вот что я получил.

    function calculateFoodOrder(numAnimals, avgFood) {
  // IMPLEMENT THIS FUNCTION!
  var total = avgFood * 7;
  if(Number(numAnimals || avgFood < 0) && (isNaN(numAnimals || avgFood))) {
    return -1;
  } else {
    return total;
  }
}
0
function createAnimalObjects(names, types, breeds) {
    // IMPLEMENT THIS FUNCTION!
    this.names = names;
    this.types = types;
    this.breeds = breeds;
    var animal= [];
    if(names.length === types.length && names.length === breeds.length && names.length!=0 && types.length!=0 && breeds.length!=0 && names != null && types!= null && breeds != null) {
        for (i = 0;i < names.length;i++)
        {
            animal.push(new Animal(names[i], types[i], breeds[i]));
        }
        return animal[0].names;
    }
    else {
        return animal;
    }

}



function mostPopularDays(week) {
    // IMPLEMENT THIS FUNCTION!
    var resultArray = [];
    if (typeof week === 'undefined' || week === null || week.length === 0) {
        return null;
    }
    else {
        var max = 0;
        var resultArray = [];
        var resultString;
        var count = 0;
        for (i = 0; i < week.length-1; i++) {
            max = Math.max(max, week[i].traffic, week[i + 1].traffic);
        }
        for (i = 0; i < week.length; i++) {
            if (week[i].traffic === max) {
                count++;
                resultArray.push(week[i].name);
            }
        }
        if (count === 1) {
            return resultArray[0];
        }
        else {
            return resultArray;
        }

    }

}

function createAnimalObjects(names, types, breeds) {
    // IMPLEMENT THIS FUNCTION!
    this.names = names;
    this.types = types;
    this.breeds = breeds;
    var animal= [];
    if(names != null && breeds != null && types !=null) {
        if (names.length === types.length && names.length === breeds.length && names.length != 0 && types.length != 0 && breeds.length != 0) {
            for (i = 0; i < names.length; i++) {
                animal.push(new Animal(names[i], types[i], breeds[i]));
            }
            return animal;
        }
        else {
            return animal;
        }
    }
    else {
        return animal;
    }

}
  • 0
    Большое спасибо, Ананд Бангад, твой ответ многое прояснил. Первая функция, по вашему мнению, плохо развивалась? Как я должен назвать это правильно? В консоли я вижу эту ошибку: petstore.js: 15 Uncaught SyntaxError: Неожиданный токен {Я не могу найти эту ошибку здесь: 15. if (Number (numAnimals || avgFood) <0) и (isNaN (numAnimals || avgFood) ) {console.log (-1); }

Ещё вопросы

Сообщество Overcoder
Наверх
Меню