2014-09-01 5 views
0

У меня есть карта местность, как это: http://ast-ss.se/terrain/Добавить несколько значений в массив

Все квадратное идентификационные находится в массиве:

for(var i = 1; i <= 160; i++) 
{ 
    squares.push(''+i); 
} 

Когда я нажимаю на площади, я хочу взять индекс позиции этой площади, и положить в другой массив, это работает отлично:

angular.element('.click').click(function() { 


        var squareId = angular.element(this).attr('id');    //Rutans id 
        var squareIndex = squares.indexOf(squareId);     //Rutans index som vi klickar på 
        var squareFirstIndex = squares.indexOf('1');     //Utgå ifrån den första    

        interval.push(squareIndex); //Add the index here 
        console.log(interval); 

Однако это решение лишь добавляет один в массив, один за каждый клик. То, что я хочу, это добавить весь интервал индекса квадрата.

Пример: Когда вы находитесь на квадрате с индексом 2 и нажимаете на квадрат с индексом 6, я хочу сохранить интервал между 2 и 6 (3,4,5) в массиве, когда вы сделав одним кликом.

Как я могу это сделать?

+0

пытаются использовать _array.concate_ 'interval.concat ([squareIndex])' –

+0

@NarekMamikonyan: Это не работает. Concat используется для объединения двух массивов в один? – user500468

+0

Да, может быть, я понял неправильно? интервал уже массив да? и вы хотите добавить другие значения или нет? –

ответ

0

Вы можете получить диапазон массива с помощью метода slice. Это не изменяет исходный массив и возвращает копию. Начальный индекс является включенным, конечный индекс является исключительным. Если начальный индекс равен или больше конечного индекса, результирующий массив пуст.

Итак:

var here = squares.indexOf(here_id); 
var there = squares.indexOf(there_id); 
var interval; 

if (here < there) { 
    interval = squares.slice(here + 1, there); 
} else { 
    interval = squares.slice(there + 1, here); 
} 

console.log(interval); 
Смежные вопросы