2014-09-01 94 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);