@sonics
html,css,angular, php, joomla, opencart, bootstrap

Почему не возвращает первый элемент в массиве правильно?

Вот сам код, по сути должен возвращаться массив из элементов с 1 по 10. т.е. всего 10.
у меня возвращает лишь так:
[undefined × 1, 1, 2, 3, 4, 5, 6, 7, 8, 9]

но ведь мы четко говорим, что c[d] = i. т.е. на первом круге c[0] = a. и = 1.
Тогда почему "undefined × 1"?
var range1 = function (a,b){
	var c = []; 
	var l = 1;
		for (var i=a; i<b; i++) {
			for (var d=0; d<l; d++); {
				c[d] = i;
			}
			l= l+1;
		}
		return c;
}
console.log(range1(1,10));
  • Вопрос задан
  • 385 просмотров
Решения вопроса 1
KorniloFF
@KorniloFF Куратор тега JavaScript
Работаю по font-end / JS
var range1 = function (a,b){
  var c = []; 
    for (var i=a; i<b; i++) {
     c.push(i);
    }
    return c;
}
console.log(range1(1,10));
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
lazalu68
@lazalu68
Salmon
Какой-то алгоритм у вас сложный, всё проще:

function range(a,b) {
  var c = new Array(Math.abs(a - b)); 
    for (var i = a; i <= b; i++) {
        c[i-a] = i;
    }
    return c;
}


Или вы хотите именно объяснение почему ваш не работает?

Отличие от решения только в том, что в этом варианте сразу создаётся массив нужной длины, не происходит расширения массива в каждой итерации, это лишняя операция.
Ответ написан
Krasnodar_etc
@Krasnodar_etc
fundraiseup
var range1 = function (a,b){
  var c = []; 
  var l = 1;
    for (var i=a; i<b; i++) {
      for (var d=0; d<l; d++); {
        c[d-1] = i;
      }
      l= l+1;
    }
    return c;
}
console.log(range1(1,10));
Ответ написан
Комментировать
Stalker_RED
@Stalker_RED
var range1 = function (from, to){
  var range = [];
  while (from <= to) {
    range.push(from++)
  }
  return range;
}
console.log(range1(1,10));
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы