Diel
@Diel

Есть ли Python'овский аналог a1,a2,aN=range(N) для JS?

На питоне можно написать
a, b, c, d, e = range(5)
и получится, что a = 0, b = 1, ..., e = 4.
Есть ли что-то подобное на JS дабы не хардкодить?
  • Вопрос задан
  • 413 просмотров
Решения вопроса 1
@President42
В JavaScript нет конструций типа питоновского a, b = 1, 2, то есть переменные присваиваются только по одной, так что не получится

UPD написал вот кое-что:
function assign(vars, vals) {
  if (vars.length === vals.length) {
    for (var i = 0, len = vars.length; i < len; i++) {
      eval("this." + vars[i] + " = " + vals[i])
    }
  }
}

function range() {
  if (arguments.length === 1) {
    result = [];
    for (var i = 0; i < arguments[0]; i++) {
      result.push(i);
    }
    return result;
  } else if (arguments.length === 2) {
    result = [];
    for (var i = arguments[0]; i < arguments[1]; i++) {
      result.push(i);
    }
    return result;
  }
}


Ипользование:
assign(['a', 'b', 'c'], range(3))

Но на самом деле, лучше это нигде не использовать, мне кажется)

P. S. Посмотрите на CoffeeScript, там Ваш пример записывается так:
[a, b, c, d, e] = [0...5]
или так:
[a, b, c, d, e] = [0..4]
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@xmeoff
Ваш вопрос состоит из двух частей:
1) инициализация переменных значениями из массива.
2) создание диапазона значений.
Ни того, ни другого, в JavaScript в чистом виде нет.
Но для вашего примера можно использовать известный прием с определением переменных в скоупе объекта window, совместно с Array-методом forEach:

['a', 'b', 'c', 'd', 'e'].forEach(function (v, i) {
	window[v] = i;
});
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы