【问题标题】:Loop through an array by set of 4 elements at a time in Javascript?在Javascript中一次通过一组4个元素循环遍历一个数组?
【发布时间】:2020-04-18 08:12:38
【问题描述】:

我有一个很长的数字数组列表,我想一次通过 4 个元素循环遍历数组

[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]

我想遍历它们,这样我就可以使用 1-45-89-12 像这样

【问题讨论】:

  • 使用索引增加 4 的 for 循环 - 并使用 slice 一次访问 4 个元素
  • 数组的长度是否总是能被 4 整除?如果没有,您可能需要添加一些边界检查,否则您将获得 undefined 值,用于超出数组项的数量。
  • @MattU 它总是能被 4 整除

标签: javascript arrays loops


【解决方案1】:

使用 for 循环使 i 增加 4。

注意:当 Jaromanda X 评论同样的事情时,我正在回答我的问题。

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

for (var i = 0; i < arr.length; i += 4) {
  console.log("Working with: " + arr.slice(i, i + 4));
}

【讨论】:

  • 但是如何在 for 循环中访问它们中的每一个呢?我不仅将它们打印出来
  • var four = arr.slice(i, i + 4) - 现在four 有四个元素,你可以用@reddy 来做你的密码 - 因为你已经展示了 no code 任何人都可以告诉你如何您可以使用结果 - 您可以根据需要使用结果
【解决方案2】:

使用 ES6 和数组函数:

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

[...Array(Math.ceil(arr.length / 4)).keys()].forEach(i => {
    const [a, b, c, d] = arr.slice(i * 4, (i+1) * 4)
 
    // a, b, c and d are the four elements of this iteration
    console.log(`iteration n°${i}`, a, b, c, d)
})

注意:Math.ceil 用于防止数组长度不能被 4 整除时出现任何错误

【讨论】:

  • 你为什么使用 .map 而没有返回任何东西?
  • 好消息@MarkMeyer。
  • @JaromandaX 你说得对,这里用forEach 代替map 更好
【解决方案3】:

lodash chunk 方法可以做到这一点。

_.chunk(['a', 'b', 'c', 'd'], 2);
// => [['a', 'b'], ['c', 'd']]

_.chunk(['a', 'b', 'c', 'd'], 3);
// => [['a', 'b', 'c'], ['d']]

【讨论】:

    猜你喜欢
    • 2015-05-22
    • 2020-12-22
    • 1970-01-01
    • 1970-01-01
    • 2013-11-06
    • 2020-09-28
    • 1970-01-01
    • 2010-12-20
    • 1970-01-01
    相关资源
    最近更新 更多