2016-01-25 2 views
2

Допустим, я хочу, переменная содержит число от 1 до 100. я мог бы сделать это следующим образом:Установить диапазон номеров в качестве переменной (Javascript)

var numbers = [1,2,3,4,...,98,99,100] 

Но это заняло бы кучу чтобы записать все эти цифры. Есть ли способ установить диапазон для этой переменной? Что-то вроде:

var numbers = [from 1, to 100] 

Это может звучать как действительно nooby вопрос, но не был в состоянии понять это сам. Заранее спасибо.

+0

не представляется возможным в JavaScript. – Filipe

+3

@ Филипе Действительно? Я могу придумать много разных способов сделать это. – usandfriends

+1

[Yea] (http://stackoverflow.com/questions/3895478/does-javascript-have-a-method-like-range-to-generate-an-array-based-on-suppl), есть обходные пути, но вы не можете сделать изначально как [PHP] (http://php.net/manual/pt_BR/function.range.php) – Filipe

ответ

4

В дополнение к this answer, вот несколько способов сделать это:

for петля:

var numbers = [] 
for (var i = 1; i <= 100; i++) { 
    numbers.push(i) 
} 


Array.prototype.fill + Array.prototype.map

var numbers = Array(100).fill().map(function(v, i) { return i + 1; }) 

Или, если разрешено использование arrow functions:

var numbers = Array(100).fill().map((v, i) => i + 1) 

Или, если вам разрешено использовать spread operator:

var numbers = [...Array(100)].map((v, i) => i + 1) 


Однако, обратите внимание, что с помощью петли for является fastest.

+0

Позор IE не поддерживает заливку. наслаждаясь тем, что привыкнуть к тому, чтобы сбросить все ограничения IE8, чтобы делать такие классные вещи. – dewd

+1

Вы пытаетесь создать карту, используя индекс, но индекс является вторым параметром карты. Добавить v в качестве значения placeholder как первая arg-current реализация с отображением карты массив из 100 NaNs –

+1

Я бы рекомендовал использовать цикл 'for' в этом случае, это намного быстрее: http: // jsperf.com/range5254535 – Selenir

2

магазин минимальный и максимальный диапазон в объекте:

var a = { 
    from: 0, 
    to: 100 
}; 
+0

чистый и чистый – rmartrenado

1

Поддерживается во всех современных браузерах, включая IE9 +.

var numbers = Array.apply(null,Array(100)).map(function(e,i){return i+1;}); 
1

Вы можете легко создать свой собственный, и хранить только пределы:

function Range(begin, end) { 
 
    this.low = begin; 
 
    this.hi = end; 
 
    this.has = function(n) { 
 
    return this.low <= n <= this.hi; 
 
    } 
 
} 
 

 
// code example 
 
var range = new Range(1,100); 
 
var num = 5; 
 

 
if (range.has(num)) { 
 
    alert("Number in range"); 
 
}

Смежные вопросы