使用自身元素的反向和向前填充数组

时间:2015-07-16 11:01:00

标签: javascript arrays

我正在尝试使用最多的数组来填充数组' n'值使用其现有的4个值。我希望用一种反向和向前的模式来填充它,直到它达到“ ”的能力。值。

例如,使用我的数组:

var array = [a, b, c, d];

我希望生成的数组遵循以下模式:

array = [a, b, c, d,
         c, b, a, b, 
         c, d, c, b,
         a, b, c, d...(continues this pattern)]

3 个答案:

答案 0 :(得分:0)

concat() slice() reverse() 会让您前进。

这会重复模式100次:



var array = ['a', 'b', 'c', 'd'];

for(var i = 0 ; i < 100 ; i++) {
  array = array.concat(array.slice(0,3).reverse());
  array = array.concat(array.slice(1,4));
}

document.body.innerHTML= array.join(' ');
&#13;
&#13;
&#13;

答案 1 :(得分:0)

var array = ['a', 'b', 'c', 'd'];

var step = 1;
var n = 10;
var length = array.length;
var result = [];

var i = 0, j = 0;
while(i !== n) {
  result.push(array[j]);
  j += step;
  if(j === 0 || j === (length - 1)) {
   step *= -1;
  }
  ++i;
}

console.log(result);

答案 2 :(得分:0)

var array = ['a','b','c','d'];
var requiredLength = 20;

// first add the descending tail (thanks @RickHitchcock)
var sequence = array.concat(array.slice(0,array.length-1).reverse());

// now we can sample until done
var newArray = [];
for(var i = 0; i < requiredLength; ++i) {
   newArray.push(sequence[i % requiredLength]);
}
但是,我怀疑d3可以进行回调,在这种情况下,您只需提供一个从索引生成答案的函数。