在JavaScript中访问数组中的每个其他项

13

我能否访问数组中的每个其他项?也就是说,所有在0、2、4、6等位置上的项。

如果需要,以下是我的代码:

function pushToHash(key, value) {
    for (var t = 0; t < value.length; t++) {
    MQHash[key[t]] = value.slice(0, lineLength[t]);
    }
}

所以,我需要获取lineLength的每个其他值。我只需要lineLength的值,不需要key的值。我想过使用模运算,但不确定如何实现。有什么想法吗?

提前感谢!

4个回答

30

你可以像这样使用数组过滤方法中的索引(第二个参数):

let arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];

// filter out all elements that are located at an even index in the array.

let x = arr.filter((element, index) => {
  return index % 2 === 0;
})

console.log(x) 
// [1, 3, 5, 7, 9]

5
如果你只想使用lineLength而不是key,那么添加第二个变量并在递增时使用+=
function pushToHash(key, value) {
    for (var t = 0, x = 0; t < value.length; t++, x += 2) {
        MQHash[key[t]] = value.slice(0, lineLength[x]);
    }
}

逗号运算符的威力...)


太好了!非常感谢你! - Rafill

2

如果使用for (var i = 1; i < array.length; i += 2),会怎么样呢?


1

这里有一个函数,可以每隔X个元素(因子)截断数组。

const truncateArray = (array: any[], factor: number): any[] => {
  let lastNumber = 0;
  return array.filter((element, index) => {
    const shouldIncludeThisElement = index === lastNumber + factor ? true : false;
    lastNumber = shouldIncludeThisElement ? index : lastNumber;
    return shouldIncludeThisElement;
  });
};

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接