2014-09-01 95 views
0

我有地圖的地形是這樣的:http://ast-ss.se/terrain/多個值添加到一個數組

所有方的ID的是一個數組:

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])' – 2014-09-01 12:50:01

+0

@NarekMamikonyan:不工作。 Concat用於將兩個數組連接成一個? – user500468 2014-09-01 12:54:24

+0

是的,可能是我明白錯了嗎?間隔已經是陣列是?你想添加或不添加其他值? – 2014-09-01 12:58:46

回答

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);