Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Как минимумом операций заполнить или лучше сразу объявить массив ц.чисел от X до Y? (https://javascript.ru/forum/misc/75912-kak-minimumom-operacijj-zapolnit-ili-luchshe-srazu-obyavit-massiv-c-chisel-ot-x-do-y.html)

Svorg 16.11.2018 09:46

Как минимумом операций заполнить или лучше сразу объявить массив ц.чисел от X до Y?
 
Здрасьте!
У меня тут в одной из задач "какой-то кастрированный урезанный JS".
Большинства методов нету, объекта Array нету, даже инкремента/декремента нету.
Дополнительная фишка в том что "оно" как-то типа считает вызовы операторов и если превышен лимит - тупо отменяет выполнение.
А мне "там" надо воплотить и использовать массив целых чисел, заполненный подряд по возрастанию начиная от заданного числа и до конца массива (тоже заданное число).
  1. Например задано: размер массива 10, начальное 400;
  2. Тогда нужен массив: [400,401,402,403,404,405,406,407,408,409];
Нагуглил кучу способов, но они или не работают в урезанных условиях, или жрут много операций.
Да и вообще от циклов хотелось бы избавиться. Может кто знает совсем тайные секретные фишки?
Спасибо!

Dilettante_Pro 16.11.2018 10:18

Цитата:

Сообщение от Svorg
массив целых чисел, заполненный подряд по возрастанию начиная от заданного числа

А зачем нужен такой массив, каждый элемент которого вычислим по начальному значению и индексу?

var startValue = 400,  index = 5;

var currValue = startValue + index;
alert(currValue);

Nexus 16.11.2018 10:20

Цитата:

Сообщение от Svorg
объекта Array нету

А что такое тогда массив, если объекта Array нет?

var start = 400 - 1,
    arrayLength = 10,
    max = start + arrayLength,
    result = [];

while (start <= max)
    result.push(start += 1);

alert(result);

рони 16.11.2018 11:27

заполнение массива es6
 
Svorg,
function createArray(length, initItem, increment = 1 )
{
   return Array.from({length}, (_,index) => initItem + increment * index)
}
alert(JSON.stringify(createArray(10, 400), null, 0));

SuperZen 16.11.2018 12:09

мои 5 копеек )

<script>
  createArray = (from, count) => {
    return Array(count).fill().map((_, i) => from + i)
  }
  console.log(createArray(400, 10))
</script>

j0hnik 16.11.2018 12:10

рони,
Там походу нет constructor и соответственно нет его статических методов.

SuperZen 16.11.2018 12:17

Если нет методов то пора подключать полифилл ) https://github.com/es-shims/es5-shim

Svorg 16.11.2018 12:46

Невозможно что-либо подключать. Обходиться тем что имеется. А имеется мало.
Кстати объявлять функции тоже нельзя)))
Цитата:

var A=[4,"test",null];
return A;
Цитата:

<OK> [4, "test", null]

Цитата:

var A=new Array(...);
return A;
Цитата:

<ERROR> undefined identifier 'new' in line 1

Цитата:

var A=Array.from(...);
return A;
Цитата:

<ERROR> undefined identifier 'Array' in line 1


Цитата:

А зачем нужен такой массив, каждый элемент которого вычислим по начальному значению и индексу?
Его требуется передавать параметром в доступные внутрибиблиотечные функции/методы. А последние заточены только под "дайте массив целых чисел!".

j0hnik 16.11.2018 12:51

Svorg,
Вот так должно сработать
var arr = [],
x = 400-1;
for (var i = 0; i<10; i+=1) arr[i] = x+=1;

SuperZen 16.11.2018 12:55

<script>
  var arr = []
  for (var i = 0; i < 10; i++) arr[i] = 400 + i
  console.log(arr)
</script>


Часовой пояс GMT +3, время: 14:34.