我的格式为[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]
答案 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);
}
}
}
}