我需要创建一些跳过的模式,我将设置到一个数组上,能够选择数组的哪一项将是这个"模式的第一项"跳过然后返回模式选择的项目。
例如,我需要在2 2 1 2
中跳转arr = [1,2,3,4,5,6,7,8,9]
,所以如果第二项(2)它将返回[2,4,6,7,9]
有没有人知道JS的方法呢? ?
答案 0 :(得分:1)
试试吧
var original = [1,2,3,4,5,6,7,8,9];
var pattern = [2,2,1,2];
console.log(cutArray(original, pattern));
function cutArray(originalArray, jumpPatternArray){
for(var i = 0; jumpPatternArray.length > i; i++)
originalArray.splice(i, jumpPatternArray[i] - 1);
return originalArray;
}
答案 1 :(得分:0)
数组通常是零索引的,所以说起始索引是两个对应于数组中的第二个元素有点奇怪,但这样的东西应该让你开始。
function skip (start, pattern, arr)
{
let idx = 0,
res = [ ];
pattern.unshift (start == 0 ? start : start - 1); // A bit odd but to accomodate the 1st index in the array being called the second element. You can just make this pattern.unshift (start); if you want to do it normally :)
for (let i of pattern) {
idx += i;
res.push (arr [idx]);
}
return res;
}
会给:
=> skip (2, [ 2, 2, 1, 2 ], [ 1, 2, 3, 4, 5, 6, 7, 8, 9 ]);
[ 2, 4, 6, 7, 9 ]