Каждый элемент массива в нижний регистр

328
28 мая 2017, 22:01

Отдельный элемент переводит, в цикле не идет. Где ошибка?

var tovar = [ 
  'Green Guatemala', 
  'Negro Marquina', 
  'Ouro Negro TP', 
  'Rojo Alicante', 
  'Rosso Levanto TP', 
  'Ruivina', 
  'Travertino Noce', 
  'Travertino Wallnut', 
  'Volacas' 
]; 
 
alert(tovar[1].toLowerCase()); // работает 
 
var sql = ""; 
for (var i = 0; i <= tovar.length; i++) { 
  var toLowerCase = tovar[i].toLowerCase(); 
  sql = sql + " =" + i + " " + toLowerCase; 
} 
alert(sql);

Answer 1

У вас классическая ошибка off-by-one. В условии цикла должно быть не <=, а <, так как в вашем случае вы выходите за границу массива.

Answer 2

Впринципе тут все было правильно, только возникала ошибка изза не совсем верного построения цикла. Индексаторы начинаються с 0, а в изначальном цикле было i <= tovar.length;, что давало на последней итерации цикла undefined, к которому была попытка применить метод toLowerCase(), изза чего собственно и была ошибка. Тоесть, в таких случаях надо ставить либо < либо tovar.length -1, как-то так :)

var tovar=[ 
 'Green Guatemala', 
 'Negro Marquina', 
 'Ouro Negro TP', 
 'Rojo Alicante', 
 'Rosso Levanto TP', 
 'Ruivina', 
 'Travertino Noce', 
 'Travertino Wallnut', 
 'Volacas' 
 ]; 
 
  var sql=""; 
  for(var i = 0; i < tovar.length; i++) 
  { 
    var toLowerCase = tovar[i].toLowerCase();  
    sql=sql+" ="+i+" "+toLowerCase; 
  } 
  console.log(sql);

READ ALSO
Как сложить данные в массиве (цикл)

Как сложить данные в массиве (цикл)

Результат отдает вот такой: 30 30 30 А нужен 90(Сложить все значения в bets

285
Использование библиотеки jquery-lang-js в js файле

Использование библиотеки jquery-lang-js в js файле

Пользуюсь библиотекой jquery-lang-js (https://githubcom/Irrelon/jquery-lang-js) для смены языка на сайте

301
Как подгрузить js файл в нужный момент?

Как подгрузить js файл в нужный момент?

Нужно подгрузить(и выполнить) js - файл в нужный момент

230