重复数组上下有一些限制

时间:2016-12-10 09:46:37

标签: javascript arrays limit

我的格式为[1,2,3,4]。我想对这个数组执行一些操作,这样我就会得到像[1,2,3,4, 4,3,2,1, 1,2]这样的输出。拜托,您能为我提供一些实现此输出的方法吗?

// function declaration 

function arrayExm(array,limit){ 
  // want some operations here so that i will get this output
}

//function execution 

arrayExm([1,2,3,4],10) 
//so it will return [1,2,3,4, 4,3,2,1, 1,2]

4 个答案:

答案 0 :(得分:3)

您可以使用简单的for循环来实现它。

if ($new_csv[$sku]['Product SKU'] != '')

答案 1 :(得分:1)

您也可以 concat()您的数组及其 reverse(),只要您限制参数使您能够获取整个数组,最后您将 slice()它将保留的数组部分

var arrayReapet = (array, limit) => {
  var results = [];
  var divisor = parseInt(limit / array.length);
  var modulo = limit % array.length;
  for (var i = 0; i < divisor; i++) {
    if (i === 0) results = results.concat(array);
    else results = results.concat(array.reverse());
  }
  results = results.concat(array.reverse().slice(0, modulo));
  return results
}

console.log(arrayReapet([1, 2, 3, 4], 10));

答案 2 :(得分:1)

编写生成器以生成来回序列。然后编写另一个生成器来获取第一个 n 值。

function* repeat(arr) {
  const rev = arr.slice().reverse();

  while (true) {
    for (let x of arr) yield x;  // Up...
    for (let x of rev) yield x;  // and down...
  }
}

function* take(iterable, n) {
  for (let x of iterable) if (!n--) return; else yield x;
}

console.log([...take(repeat([1,2,3,4]), 10)]);

答案 3 :(得分:0)

试试这个,它对你有所帮助。在这段代码中,你可以通过给出true(向前)和false(向后)来向前和向后启动阵列排列。即使数组包含字符串,您也可以使用此代码进行排列。

var array = [1, 2, 3, 4];
var outputArray = [];
var j = 0;
var i;
arrayRepeat(array, 10, true);


alert(outputArray);

function arrayRepeat(array, limit, direction) {

  if (direction) {
    for (i = 0; i < array.length, j < limit; i++, j++) {
      outputArray[j] = array[i];
      if (i == array.length) {
        arrayRepeat(array, limit, false);
      }
    }
  } else {
    for (i = array.length - 1; i >= 0, j < limit; i--, j++) {
      outputArray[j] = array[i];
      if (i == -1) {
        arrayRepeat(array, limit, true);
      }
    }
  }
}