2016-02-23 2 views
1

Итак, я делаю бесплатный курс javascript в Интернете. Я нахожусь на уроке 2. Он сосредоточился на массивах, объектах и ​​событиях. Я преуспел в викторине, но понятия не имею, как это сделать. Вот задание.Не удалось вернуть элемент массива

Создайте массив, содержащий «январь» через «декабрь» Создайте функцию с именем GetMonthName, которая принимает один номер в качестве параметра и возвращает имя этого месяца. Например:

getMonth (3); // вернется Месяц

Помните, что массивы индексируются начиная с 0. , но здесь месяц 1 должен быть январем. Значит, вам придется это объяснить.

Итак, вот мой код. Я на правильном пути? Любая помощь будет оценена по достоинству.

//create array 
var months = ["Month","January","February","March","April","May","June","July","August","September","October","November","December"]; 

//create function 
function getMonthName(month) { 
    for(i=0;i<=12;i++) { 
     var getMonth=months[i]; 
     return getMonth; 
    } 
} 

//call function 
getMonthName(getMonth); 
+1

Вам не нужно использовать 'для loop' – isvforall

+1

Почему вы используете для цикла? Все, что вам нужно сделать, это передать 'index' в качестве аргумента в функцию и вернуть' month [index] ' –

+0

Вам не нужно прокручивать что-либо внутри функции' getMonthName'. Также массив месяцев не должен содержать слово «месяц» – jasonwarford

ответ

1

Вы не хотите использовать здесь цикл, так как вы возвращаетесь только на один месяц. Скорее всего, вы хотите что-то вроде:

function getMonthName(month) { 
    var getMonth=months[month]; 
    return getMonth; 
} 

или проще:

function getMonthName(month) { 
    return months[month]; 
} 

Чтобы справиться с 0-индексацию, вы также можете удалить «Месяц» из массива, а просто изменить свой индекс:

function getMonthName(month) { 
    return months[month-1]; 
} 
1

Вам не нужно использовать для цикла, просто возвращает значение

return months[i - 1]; 
0

Вы возвращаетесь из цикла без каких-либо условий, поэтому вы всегда будете возвращать первый элемент в массиве и останавливать цикл.

Если это какое-то упражнение при помощи петли, то вы должны вернуться только тогда, когда выполняется условие, как

function getMonthName(month) { 
    for(i=0;i<=12;i++) { 
     var getMonth=months[i]; 
     if(i == month){ 
      return getMonth; 
     } 
    } 
} 

Но если вы действительно хотите, чтобы получить месяц из массива по его индексу, и имеете это 1 на основе так getMonthName(1) == "January" то:

var months = ["January","February","March","April","May","June","July","August","September","October","November","December"]; 
function getMonthName(month) { 
    return months[ month + 1 ]; 
} 
1

Вам не нужно иметь «месяц» в массиве. Попробуйте сделать что-то вроде этого

//create array 
var months = ["January","February","March","April","May","June","July","August","September","October","November","December"]; 

//create function 
function getMonthName(month) { 
    return months[month-1] 
} 

Таким образом, вы не должны ничего добавлять в массив, за исключением названий месяцев

0

позволяет увидеть то, что вы могли бы сделать:

//create array 
var months = ["Month","January","February","March","April","May","June","July","August","September","October","November","December"]; 

Здесь на функция сначала я удостоверяю, что мой параметр является целым числом, тогда я проверяю, проходит ли число от 1 до 12 и, наконец, я возвращаю выбранный месяц на основе числа, прошедшего меньше одного.

//create function 
function getMonthName(month) { 
    month = (parseInt(month) || 0) -1; 
    return month>0 && month<13 ? months[month] : null; 
} 

//call function 
getMonthName(1); 
0

var months = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]; 
 

 
var getMonth = (function(index){ 
 
\t return this[index-1]; 
 
}).bind(months); 
 

 
var month = getMonth(1); 
 

 
document.getElementById('month').innerHTML = month;
<div id="month"></div>

Пример: https://jsfiddle.net/artamonovdev/s80rx6fg/