Я просмотрел похожие вопросы, но не нашел того, что прямо отвечает на мой вопрос. Я ищу наиболее эффективный способ печати нечетных чисел от 1 до 100 без использования каких-либо дополнительных условных операторов (с использованием JavaScript).
20 лет разработки, 7 стандартов и до сих пор нет range() в javascript. Какая жалость!
Хотя ответы дают вам… «ответ» на ваш вопрос, они не могут сказать, почему он отвечает на ваш вопрос. Вам необходимо предоставить больше информации, например, что вы пробовали, какие вопросы вы просмотрели. В настоящее время вы просто ищете кого-то, кто дал бы вам код для выполнения чего-то, что не является продуктивным.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Просто сделай это:
for (var i = 1; i < 100; i += 2) {
console.info(i);
}
Вы, конечно, можете заменить console.info(i) на то, что вы хотите «распечатать» (это немного непонятно). Вы можете записать их на HTML-страницу, если хотите:
for (var i = 1; i < 100; i += 2) {
document.write(i + "<br>");
}
Вы можете сделать это:
for (let i = 1; i < 100; i+=2) {
console.info(i);
}
Это цикл for.
Вы могли сделать: console.info (1); console.info (3); .... console.info (99);
Вот почему мы используем цикл for. Циклу For необходимо знать, что такое первый индекс (1), последний индекс (99. вот почему я сделал: '<100) и каковы шаги (2). Итак, он начинается с i = 1, выполните внутренний код в цикле for. Когда закончите, добавьте 2 (шага) к i. так что я 3. Выполните код с i = 3. Когда закончите, добавьте 2 (шага) к i. так что мне 5. Выполните код с i = 5. и т.п.
Вы могли бы хотя бы объяснить, что делает этот код.
@CarlMarkham, если кому-то нужно объяснение, что такое цикл for и что он делает, возможно, это не лучшее место, чтобы задавать вопросы в
@apokryfos SO - это место, где можно задать любой вопрос. То, что вам может показаться простым, может оказаться не таким простым для других. Вы всегда должны учитывать это при ответе и описывать, почему ваш код работает или почему он лучше всего. Простое предоставление кода никак не учит OP.
@CarlMarkham, это цикл for. Это похоже на страницу 3 любого базового руководства на любом языке.
Это альтернатива использованию функционального фильтра.
console.info(Array.from({length: 100}, (_, i) => i).filter(n => n % 2));Вы могли бы хотя бы объяснить, что делает этот код.
Ради усложнения:
The
Array.from()method creates a new, shallow-copied Array instance from an array-like or iterable object.
...Array.from()lets you create Arrays from:
- array-like objects (objects with a length property and indexed elements) or
- iterable objects (objects where you can get its elements, such as Map and Set).
- https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/from
Вы можете вызвать Array.from для объекта со свойством длины и без других свойств для повторения n раз, где n - значение свойства длины. Второй аргумент Array.from - это обратный вызов, который вызывается на каждой итерации с элементом (undefined) и индексом. Возвращаемое значение обратного вызова - это значение, соответствующее индексу во вновь созданном массиве.
Мы можем умножить индекс на 2, а затем вычесть единицу, чтобы получить только нечетные значения, что означает, что мы можем начать с длины 50, а не повторять 100 раз, а затем повторять вновь созданный массив еще 100 раз, чтобы вернуть другой массив только с 50 элементами, как предлагается. в других ответах.
console.info(Array.from({ length: 50 }, (e, i) => (i * 2) + 1).join(' '))
Начните с 1 и продолжайте добавлять 2