2016-07-16 3 views
1
  1. Я хочу, чтобы цикл через массив.
  2. Любой индекс, длина которого больше 3, я хочу сокращать.
  3. Я хочу поместить новые сокращенные месяцы в новый массив.
  4. Я хочу проверить, что он работает, написав результаты на консоли.

Я могу получить код для запуска, однако результаты не получаются так, как я надеюсь. По моему пониманию, цикл работает true, запустив оператор if, который работает true, запустив блок кода. После этого цикл должен повторяться и продолжаться до тех пор, пока i < months.length, но это не так.Результаты из цикла не работают правильно

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

 
for (var i = 0; i < months.length; i++) { 
 
if (months[i].length > 3) { 
 
monthsAbbrev = months[i].slice(0, 3); 
 
} 
 
} 
 

 
console.log(monthsAbbrev);

+3

[ 'Array.prototype.push()'] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/ push) – Andreas

+0

На уровне OP я бы лучше дал ему эту ссылку: http://www.w3schools.com/jsref/jsref_push.asp – gromit190

+0

Причина, по которой она не работает так, как вы ее ожидаете, заключается в том, что ваше задание является символом 'char []', а не 'string []' и каждый раз заменяет этот массив. Вы можете проверить это с помощью 'console.log (monthsAbbrev [0]);'. Уже есть ряд ответов, говорящих вам, что делать, но не почему это не работает. – adamdc78

ответ

1

Кроме толкания, вы можете пропустить проверку на длину> 3, так как срез уже делают это, и что мешает пропустить некоторые месяц, как 'May'.

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

 
for (var i = 0; i < months.length; i++) { 
 
    monthsAbbrev.push(months[i].slice(0, 3)); 
 
} 
 

 
console.log(monthsAbbrev);

+1

Спасибо, Нина ... Я бы не поймал этого раньше. Я очень ценю отзывы и помощь! – HeresJohnny5

4

Вы можете сделать это просто с Array.prototype.map()

var months = ["January", "Febuary"]; //sample data for better understanding 
var monthsAbbrev = months.map(v => v.substr(0,3)); 
console.log(monthsAbbrev); //["Jan", "Feb"] 

Кстати вы не pushing ничего в целевой массив в коде, то есть проблема.

1

Вам нужно добавить месяцы в свой массив monthBbrev. Один из способов, вы можете сделать это с помощью функции .push():

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

 
for (var i = 0; i < months.length; i++) { 
 
    if (months[i].length > 3) { 
 
    monthsAbbrev.push(months[i].slice(0, 3)); 
 
    } 
 
} 
 

 
console.log(monthsAbbrev);

+0

Большое спасибо j08691. Это очень помогло и решило проблему. Я собираюсь изучить код более подробно и убедиться, что я понимаю синтаксис, не говоря уже о том, чтобы лучше понять свойство push. Независимо от того, спасибо! – HeresJohnny5

1

Вы просто должны были нажать на массив сформирован. У вас уже было это.

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

 
for (var i = 0; i < months.length; i++) { 
 
if (months[i].length > 3) { 
 
monthsAbbrev.push(months[i].slice(0, 3)); 
 
} 
 
} 
 

 
console.log(monthsAbbrev);

+0

Спасибо Ayan. Я не был знаком с функцией push, но теперь это имеет смысл. Добавляя сокращенный месяц к переменной monthAbbrev, а затем нажав следующую переменную, используя свойство push. Я новичок в коде, но мне действительно нравится то, что я изучаю до сих пор. Я надеюсь, что в следующем месяце начнется веб-разработка bootcamp. В любом случае, еще раз спасибо! – HeresJohnny5

Смежные вопросы