从数组中选择特定元素

时间:2014-08-12 08:46:51

标签: javascript arrays math createjs tween

我有一个包含17张图像的数组。我想从阵列中挑选每个图像并将其放在舞台上,但应该有一个特定的方式来做到这一点。 在我选择第一张图片后,我需要第一张图片,所以这应该是这样的:

var myarray = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16]; // these are the indexes for the 17 images

挑选元素的顺序如下:[0,9,1,10,2,11,3,12,4,13,5,14,6,15,7,16,8]; < / p>

我需要在Tween中使用它们,这是我正在执行此操作的功能,但我没有上面提到的oder。

var pick_images = function(lights_arr,iterator,f)
{
  if(iterator < lights_arr.length)
  {
    iterator = iterator +1;
  }
    createjs.Tween.get(lieghts_arr[iterator]).to({alpha:0},200).wait(0).to({alpha:1},200).wait(100).call([f,lights_arr,f]);
pick_images(arr, i,pick_images);

我知道如果我把lights_arr.length除以2,将它四舍五入我总是把第二个图像像9,10,11或12.这样我需要在每个循环后减去两个元素(图像)我用过。

你知道我怎么能在我的功能中工作呢?

4 个答案:

答案 0 :(得分:1)

这个怎么样?

var myarray = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16];

var select = [];
var step = 9;
var len = myarray.length;
for(var i = 0; i < len * step; i += step)
    select.push(myarray[i % len])

console.log(select) // [ 0, 9, 1, 10, 2, 11, 3, 12, 4, 13, 5, 14, 6, 15, 7, 16, 8 ]

答案 1 :(得分:1)

只是扩展/优化了georg的代码以使其更具动态性,因为我认为他是一个非常简洁的解决方案:

var len = 17,
    myarray = Array.apply(null, {length: len}).map(Number.call, Number),
    select = [],
    step = Math.round(myarray.length / 2);

for(var i = 0; i < len * step; i += step) {
  select.push(myarray[i % len]);
}

console.log(select);

Here是生成一个用整数填充的数组的代码。

答案 2 :(得分:0)

var switch = false;
var selectedIndex = 0;
if(i < arr.length)
{
    selectedIndex = (switch) ? i : i + 9; 
    switch = !switch;
}

这样的事情应该这样做,但可能做得更整洁。请注意,未经测试并位于我的popo之上。

编辑:哦,对于你想删除的图像,你可以使用拼接:

var arr = [0,1,2];
arr.splice(1,1); // position and how many to remove

output: arr = [0,2];

splice w3c documentation

答案 3 :(得分:0)

var myarray = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16];
var select = [];
var position = 0;
while (position < myarray.length) {
  select.push(myarray[position]);
  if (select.length % 2) position += 9;
  else position -= 8;
}
alert(select);