如何使用 for 循环测试一个数组中的数字对

How to test pairs of numbers in one Array with a for loop

提问人:Severin Koch 提问时间:11/1/2023 最后编辑:gogSeverin Koch 更新时间:11/1/2023 访问量:46

问:

如何在一个数组中测试一对数字?

喜欢

const arr = [1, 3, 5, 9, 11, 12]

我想测试 1 和 3、3 和 5、5 和 9、9 和 11、11 和 12。

for (let i= 0; arr.length > i; i++){
  for (let j=0; arr.length > j; j++){
        console.log(arr[i], arr[j])


}}

doubleple for 循环在 javascript 中需要是什么样子的。

JavaScript 循环

评论

2赞 gog 11/1/2023
你只需要一个循环。从 0 循环到长度 - 2 并进行比较arr[i]arr[i+1]
0赞 Barmar 11/1/2023
循环应使用 。您需要在最后一个元素之前停止,以便它仍然有效。i < arr.length-1i+
0赞 mandy8055 11/1/2023
像这样:for (let i = 0; i < arr.length - 1; i++) { console.log(arr[i], arr[i + 1]); }
0赞 Severin Koch 11/1/2023
当我用一个循环制作最后一个元素时,我如何处理它?
0赞 mandy8055 11/1/2023
你@SeverinKoch尝试过运行上面的代码?如果这样做,则可以看到预期的输出。例如:codepen.io/mandy8055/pen/RwvRava

答:

1赞 David Jentjens 11/1/2023 #1

如@gog所述,您可以使用单个循环在数组中实现配对测试。只需从 0 迭代到 length - 2 并将 arr[i] 与 arr[i+1] 进行比较。

为此,请使用循环条件 i < arr.length - 1。此方法可确保在最后一个元素之前停止,从而允许在相邻元素之间进行有效的对比较。

0赞 Vivick 11/1/2023 #2

简单地使用“滑动窗口”技术:

for(let i = 0, max = arr.length - 1; i < max; i += 1) {
  const first = arr[i];
  const second = arr[i + 1];

  // do something with first and second
}

您甚至可以概括它:

function slidingWindow(size, callback) {
  const lengthOffset = size - 1;
  for(let i = 0, max = arr.length - lengthOffset; i < max; i += 1){
    const slide = arr.slice(i, i + size);
    callback(slide, i, arr);
  }
}
0赞 Thomas 11/1/2023 #3

您不需要内部循环:

const arr = [1, 3, 5, 9, 11, 12]

for (let i = 1; i < arr.length; ++i) {
  console.log(`${arr[i - 1]} and ${arr[i]}`);
}