采用跳过模式的函数,它将获取一个数组并返回新的arr

时间:2018-03-27 17:03:36

标签: javascript arrays

我需要创建一些跳过的模式,我将设置到一个数组上,能够选择数组的哪一项将是这个"模式的第一项"跳过然后返回模式选择的项目。

例如,我需要在2 2 1 2中跳转arr = [1,2,3,4,5,6,7,8,9],所以如果第二项(2)它将返回[2,4,6,7,9]有没有人知道JS的方法呢? ?

2 个答案:

答案 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 ]