Hướng dẫn how to combine two for loops in javascript - cách kết hợp hai vòng lặp for trong javascript

Tương tự như một câu trả lời khác, nhưng đầy đủ hơn một chút:

const arrays = [[1,10],[32,34],[9,12]]
const range = (a,b) => a >= b ? [] :
    [...Array(b-a).keys()].map(i => i+a)
const result = arrays.reduce( (a,c) =>
     a.concat( range(c[0], c[1]+1) ), [] )

// =>   [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 32, 33, 34, 9, 10, 11, 12 ]

Nếu bạn thích chức năng phạm vi truyền thống hơn, thì:

const arrays = [[1,10],[32,34],[9,12]]

function range(a,b) {
    var arr = []
    for (let i = a; i < b; i++)
        arr.push(i)
    return arr
}

const result = arrays.reduce( function(a,c) {
    return a.concat( range(c[0], c[1]+1) )
}, [] )

Hướng dẫn how to combine two for loops in javascript - cách kết hợp hai vòng lặp for trong javascript

Nếu bạn đang gặp khó khăn trong việc tìm hiểu thử thách làm tổ của Freecodecamp cho các vòng lặp, đừng lo lắng. Chúng tôi đã trở lại của bạn.

Trong vấn đề này, bạn phải hoàn thành hàm

const arrays = [[1,10],[32,34],[9,12]]

function range(a,b) {
    var arr = []
    for (let i = a; i < b; i++)
        arr.push(i)
    return arr
}

const result = arrays.reduce( function(a,c) {
    return a.concat( range(c[0], c[1]+1) )
}, [] )
9 và lấy một mảng đa chiều làm đối số. Hãy nhớ rằng một mảng đa chiều, đôi khi được gọi là mảng 2D, chỉ là một mảng mảng, ví dụ,
function multiplyAll(arr) {
  var product = 1;
  // Only change code below this line

  // Only change code above this line
  return product;
}

multiplyAll([[1,2],[3,4],[5,6,7]]);
0.

Trong trình chỉnh sửa bên phải,

const arrays = [[1,10],[32,34],[9,12]]

function range(a,b) {
    var arr = []
    for (let i = a; i < b; i++)
        arr.push(i)
    return arr
}

const result = arrays.reduce( function(a,c) {
    return a.concat( range(c[0], c[1]+1) )
}, [] )
9 được định nghĩa như sau:

function multiplyAll(arr) {
  var product = 1;
  // Only change code below this line

  // Only change code above this line
  return product;
}

multiplyAll([[1,2],[3,4],[5,6,7]]);

Bạn cần hoàn thành chức năng để nó nhân biến

function multiplyAll(arr) {
  var product = 1;
  // Only change code below this line

  // Only change code above this line
  return product;
}

multiplyAll([[1,2],[3,4],[5,6,7]]);
2 với mỗi số trong các giao diện phụ của tham số
function multiplyAll(arr) {
  var product = 1;
  // Only change code below this line

  // Only change code above this line
  return product;
}

multiplyAll([[1,2],[3,4],[5,6,7]]);
3, đây là một mảng đa chiều.

Có rất nhiều cách khác nhau để giải quyết vấn đề này, nhưng chúng tôi sẽ tập trung vào phương pháp đơn giản nhất bằng cách sử dụng các vòng lặp

function multiplyAll(arr) {
  var product = 1;
  // Only change code below this line

  // Only change code above this line
  return product;
}

multiplyAll([[1,2],[3,4],[5,6,7]]);
4.

Thiết lập các vòng function multiplyAll(arr) { var product = 1; // Only change code below this line // Only change code above this line return product; } multiplyAll([[1,2],[3,4],[5,6,7]]); 4 của bạn

Bởi vì

function multiplyAll(arr) {
  var product = 1;
  // Only change code below this line

  // Only change code above this line
  return product;
}

multiplyAll([[1,2],[3,4],[5,6,7]]);
3 là một mảng đa chiều, bạn sẽ cần hai vòng
function multiplyAll(arr) {
  var product = 1;
  // Only change code below this line

  // Only change code above this line
  return product;
}

multiplyAll([[1,2],[3,4],[5,6,7]]);
4: một vòng lặp qua mỗi mảng mảng phụ và một vòng khác để lặp qua các phần tử trong mỗi mảng con.

Vòng qua các mảng bên trong

Để làm điều này, hãy thiết lập một vòng lặp

function multiplyAll(arr) {
  var product = 1;
  // Only change code below this line

  // Only change code above this line
  return product;
}

multiplyAll([[1,2],[3,4],[5,6,7]]);
4 như bạn đã thực hiện trong các thử thách trước đây:

function multiplyAll(arr) {
  let product = 1;
  // Only change code below this line
  for (let i = 0; i < arr.length; i++) {
    
  }
  // Only change code above this line
  return product;
}

multiplyAll([[1,2],[3,4],[5,6,7]]);

Lưu ý rằng chúng tôi đang sử dụng

function multiplyAll(arr) {
  var product = 1;
  // Only change code below this line

  // Only change code above this line
  return product;
}

multiplyAll([[1,2],[3,4],[5,6,7]]);
9 thay vì
function multiplyAll(arr) {
  let product = 1;
  // Only change code below this line
  for (let i = 0; i < arr.length; i++) {
    
  }
  // Only change code above this line
  return product;
}

multiplyAll([[1,2],[3,4],[5,6,7]]);
0 cho vòng lặp và khai báo
function multiplyAll(arr) {
  var product = 1;
  // Only change code below this line

  // Only change code above this line
  return product;
}

multiplyAll([[1,2],[3,4],[5,6,7]]);
2. Trong thử thách này, bạn sẽ không nhận thấy sự khác biệt giữa hai người, nhưng nói chung, việc sử dụng
function multiplyAll(arr) {
  let product = 1;
  // Only change code below this line
  for (let i = 0; i < arr.length; i++) {
    
  }
  // Only change code above this line
  return product;
}

multiplyAll([[1,2],[3,4],[5,6,7]]);
2 và
function multiplyAll(arr) {
  var product = 1;
  // Only change code below this line

  // Only change code above this line
  return product;
}

multiplyAll([[1,2],[3,4],[5,6,7]]);
9 của ES6 là tốt bất cứ khi nào bạn có thể. Bạn có thể đọc thêm về lý do tại sao trong bài viết này.

Bây giờ hãy đăng nhập từng phần phụ vào bảng điều khiển:

function multiplyAll(arr) {
  let product = 1;
  // Only change code below this line
  for (let i = 0; i < arr.length; i++) {
    console.log(arr[i]);
  }
  // Only change code above this line
  return product;
}

multiplyAll([[1,2],[3,4],[5,6,7]]);

Bởi vì bạn đang gọi

const arrays = [[1,10],[32,34],[9,12]]

function range(a,b) {
    var arr = []
    for (let i = a; i < b; i++)
        arr.push(i)
    return arr
}

const result = arrays.reduce( function(a,c) {
    return a.concat( range(c[0], c[1]+1) )
}, [] )
9 với
function multiplyAll(arr) {
  let product = 1;
  // Only change code below this line
  for (let i = 0; i < arr.length; i++) {
    
  }
  // Only change code above this line
  return product;
}

multiplyAll([[1,2],[3,4],[5,6,7]]);
5 ở phía dưới, bạn sẽ thấy những điều sau đây:

[ 1, 2 ]
[ 3, 4 ]
[ 5, 6, 7 ]

Vòng qua các phần tử trong mỗi mảng con

Bây giờ bạn cần lặp qua từng số trong các mạng phụ, bạn vừa đăng nhập vào bảng điều khiển.

Xóa

function multiplyAll(arr) {
  let product = 1;
  // Only change code below this line
  for (let i = 0; i < arr.length; i++) {
    
  }
  // Only change code above this line
  return product;
}

multiplyAll([[1,2],[3,4],[5,6,7]]);
6 và tạo vòng lặp
function multiplyAll(arr) {
  var product = 1;
  // Only change code below this line

  // Only change code above this line
  return product;
}

multiplyAll([[1,2],[3,4],[5,6,7]]);
4 khác bên trong cái bạn vừa viết:

function multiplyAll(arr) {
  let product = 1;
  // Only change code below this line
  for (let i = 0; i < arr.length; i++) {
    for (let j = 0; j < arr[i].length; j++) {
      
    }
  }
  // Only change code above this line
  return product;
}

multiplyAll([[1,2],[3,4],[5,6,7]]);

Hãy nhớ rằng, đối với vòng lặp bên trong, chúng ta cần kiểm tra

function multiplyAll(arr) {
  let product = 1;
  // Only change code below this line
  for (let i = 0; i < arr.length; i++) {
    
  }
  // Only change code above this line
  return product;
}

multiplyAll([[1,2],[3,4],[5,6,7]]);
8 của
function multiplyAll(arr) {
  let product = 1;
  // Only change code below this line
  for (let i = 0; i < arr.length; i++) {
    
  }
  // Only change code above this line
  return product;
}

multiplyAll([[1,2],[3,4],[5,6,7]]);
9 vì
function multiplyAll(arr) {
  let product = 1;
  // Only change code below this line
  for (let i = 0; i < arr.length; i++) {
    
  }
  // Only change code above this line
  return product;
}

multiplyAll([[1,2],[3,4],[5,6,7]]);
9 là một trong những mạng phụ mà chúng tôi đã xem xét trước đó.

Bây giờ đăng nhập

function multiplyAll(arr) {
  let product = 1;
  // Only change code below this line
  for (let i = 0; i < arr.length; i++) {
    console.log(arr[i]);
  }
  // Only change code above this line
  return product;
}

multiplyAll([[1,2],[3,4],[5,6,7]]);
1 vào bảng điều khiển để xem từng phần tử riêng lẻ:

function multiplyAll(arr) {
  let product = 1;
  // Only change code below this line
  for (let i = 0; i < arr.length; i++) {
    for (let j = 0; j < arr[i].length; j++) {
      console.log(arr[i][j]);
    }
  }
  // Only change code above this line
  return product;
}

multiplyAll([[1,2],[3,4],[5,6,7]]);
1
2
3
4
5
6
7

Cuối cùng, nhân

function multiplyAll(arr) {
  var product = 1;
  // Only change code below this line

  // Only change code above this line
  return product;
}

multiplyAll([[1,2],[3,4],[5,6,7]]);
2 với mỗi phần tử trong mỗi phần phụ:

function multiplyAll(arr) {
  let product = 1;
  // Only change code below this line
  for (let i = 0; i < arr.length; i++) {
    for (let j = 0; j < arr[i].length; j++) {
      product *= arr[i][j];
    }
  }
  // Only change code above this line
  return product;
}

multiplyAll([[1,2],[3,4],[5,6,7]]);

Nếu bạn đăng nhập

function multiplyAll(arr) {
  var product = 1;
  // Only change code below this line

  // Only change code above this line
  return product;
}

multiplyAll([[1,2],[3,4],[5,6,7]]);
2 vào bảng điều khiển, bạn sẽ thấy câu trả lời chính xác cho từng trường hợp kiểm tra:

const arrays = [[1,10],[32,34],[9,12]]

function range(a,b) {
    var arr = []
    for (let i = a; i < b; i++)
        arr.push(i)
    return arr
}

const result = arrays.reduce( function(a,c) {
    return a.concat( range(c[0], c[1]+1) )
}, [] )
0
const arrays = [[1,10],[32,34],[9,12]]

function range(a,b) {
    var arr = []
    for (let i = a; i < b; i++)
        arr.push(i)
    return arr
}

const result = arrays.reduce( function(a,c) {
    return a.concat( range(c[0], c[1]+1) )
}, [] )
1

Xem kỹ hơn

Nếu bạn vẫn không chắc tại sao mã trên hoạt động, đừng lo lắng - bạn không đơn độc. Làm việc với các vòng lặp lồng nhau là phức tạp, và thậm chí các nhà phát triển có kinh nghiệm cũng có thể bị nhầm lẫn.

Trong các trường hợp như thế này, nó có thể hữu ích để đăng nhập một cái gì đó chi tiết hơn vào bảng điều khiển. Quay trở lại mã của bạn và đăng nhập

function multiplyAll(arr) {
  let product = 1;
  // Only change code below this line
  for (let i = 0; i < arr.length; i++) {
    console.log(arr[i]);
  }
  // Only change code above this line
  return product;
}

multiplyAll([[1,2],[3,4],[5,6,7]]);
4 vào bảng điều khiển ngay trước vòng
function multiplyAll(arr) {
  var product = 1;
  // Only change code below this line

  // Only change code above this line
  return product;
}

multiplyAll([[1,2],[3,4],[5,6,7]]);
4 bên trong:

const arrays = [[1,10],[32,34],[9,12]]

function range(a,b) {
    var arr = []
    for (let i = a; i < b; i++)
        arr.push(i)
    return arr
}

const result = arrays.reduce( function(a,c) {
    return a.concat( range(c[0], c[1]+1) )
}, [] )
2

Trong vòng lặp

function multiplyAll(arr) {
  var product = 1;
  // Only change code below this line

  // Only change code above this line
  return product;
}

multiplyAll([[1,2],[3,4],[5,6,7]]);
4 bên ngoài, mỗi lần lặp đi qua các mảng con trong
function multiplyAll(arr) {
  var product = 1;
  // Only change code below this line

  // Only change code above this line
  return product;
}

multiplyAll([[1,2],[3,4],[5,6,7]]);
3. Bạn sẽ thấy điều này trong bảng điều khiển:

const arrays = [[1,10],[32,34],[9,12]]

function range(a,b) {
    var arr = []
    for (let i = a; i < b; i++)
        arr.push(i)
    return arr
}

const result = arrays.reduce( function(a,c) {
    return a.concat( range(c[0], c[1]+1) )
}, [] )
3

Lưu ý rằng chúng tôi đang sử dụng các mẫu chữ ở trên.

function multiplyAll(arr) {
  let product = 1;
  // Only change code below this line
  for (let i = 0; i < arr.length; i++) {
    console.log(arr[i]);
  }
  // Only change code above this line
  return product;
}

multiplyAll([[1,2],[3,4],[5,6,7]]);
4 giống như
function multiplyAll(arr) {
  let product = 1;
  // Only change code below this line
  for (let i = 0; i < arr.length; i++) {
    console.log(arr[i]);
  }
  // Only change code above this line
  return product;
}

multiplyAll([[1,2],[3,4],[5,6,7]]);
9, dễ dàng hơn nhiều để viết.

Bây giờ trong vòng lặp

function multiplyAll(arr) {
  var product = 1;
  // Only change code below this line

  // Only change code above this line
  return product;
}

multiplyAll([[1,2],[3,4],[5,6,7]]);
4 bên trong, đăng nhập
[ 1, 2 ]
[ 3, 4 ]
[ 5, 6, 7 ]
1 vào bảng điều khiển:

const arrays = [[1,10],[32,34],[9,12]]

function range(a,b) {
    var arr = []
    for (let i = a; i < b; i++)
        arr.push(i)
    return arr
}

const result = arrays.reduce( function(a,c) {
    return a.concat( range(c[0], c[1]+1) )
}, [] )
4

Vòng lặp

function multiplyAll(arr) {
  var product = 1;
  // Only change code below this line

  // Only change code above this line
  return product;
}

multiplyAll([[1,2],[3,4],[5,6,7]]);
4 bên trong đi qua từng phần tử trong mỗi mảng con (
function multiplyAll(arr) {
  let product = 1;
  // Only change code below this line
  for (let i = 0; i < arr.length; i++) {
    
  }
  // Only change code above this line
  return product;
}

multiplyAll([[1,2],[3,4],[5,6,7]]);
9), vì vậy bạn sẽ thấy điều này trong bảng điều khiển:

const arrays = [[1,10],[32,34],[9,12]]

function range(a,b) {
    var arr = []
    for (let i = a; i < b; i++)
        arr.push(i)
    return arr
}

const result = arrays.reduce( function(a,c) {
    return a.concat( range(c[0], c[1]+1) )
}, [] )
5

Lần lặp đầu tiên của

[ 1, 2 ]
[ 3, 4 ]
[ 5, 6, 7 ]
4 lấy thân con đầu tiên,
[ 1, 2 ]
[ 3, 4 ]
[ 5, 6, 7 ]
5. Sau đó, lần lặp đầu tiên của
[ 1, 2 ]
[ 3, 4 ]
[ 5, 6, 7 ]
6 đi qua từng phần tử trong mép con đó:

const arrays = [[1,10],[32,34],[9,12]]

function range(a,b) {
    var arr = []
    for (let i = a; i < b; i++)
        arr.push(i)
    return arr
}

const result = arrays.reduce( function(a,c) {
    return a.concat( range(c[0], c[1]+1) )
}, [] )
6

Ví dụ này khá đơn giản, nhưng

function multiplyAll(arr) {
  let product = 1;
  // Only change code below this line
  for (let i = 0; i < arr.length; i++) {
    console.log(arr[i]);
  }
  // Only change code above this line
  return product;
}

multiplyAll([[1,2],[3,4],[5,6,7]]);
1 vẫn có thể khó hiểu mà không đăng nhập nhiều thứ vào bảng điều khiển.

Một cải tiến nhanh chóng mà chúng tôi có thể thực hiện là khai báo một biến

[ 1, 2 ]
[ 3, 4 ]
[ 5, 6, 7 ]
8 ở vòng
function multiplyAll(arr) {
  var product = 1;
  // Only change code below this line

  // Only change code above this line
  return product;
}

multiplyAll([[1,2],[3,4],[5,6,7]]);
4 bên ngoài và đặt nó bằng
function multiplyAll(arr) {
  let product = 1;
  // Only change code below this line
  for (let i = 0; i < arr.length; i++) {
    
  }
  // Only change code above this line
  return product;
}

multiplyAll([[1,2],[3,4],[5,6,7]]);
9:

const arrays = [[1,10],[32,34],[9,12]]

function range(a,b) {
    var arr = []
    for (let i = a; i < b; i++)
        arr.push(i)
    return arr
}

const result = arrays.reduce( function(a,c) {
    return a.concat( range(c[0], c[1]+1) )
}, [] )
7

Sau đó, chỉ cần thực hiện một vài điều chỉnh cho mã để sử dụng biến

[ 1, 2 ]
[ 3, 4 ]
[ 5, 6, 7 ]
8 mới thay vì
function multiplyAll(arr) {
  let product = 1;
  // Only change code below this line
  for (let i = 0; i < arr.length; i++) {
    
  }
  // Only change code above this line
  return product;
}

multiplyAll([[1,2],[3,4],[5,6,7]]);
9:

const arrays = [[1,10],[32,34],[9,12]]

function range(a,b) {
    var arr = []
    for (let i = a; i < b; i++)
        arr.push(i)
    return arr
}

const result = arrays.reduce( function(a,c) {
    return a.concat( range(c[0], c[1]+1) )
}, [] )
8

Đó phải là tất cả mọi thứ bạn cần biết về các mảng đa chiều và các vòng lặp ____24 lồng nhau. Bây giờ hãy ra khỏi đó và lặp lại với những người giỏi nhất!


Học mã miễn phí. Chương trình giảng dạy nguồn mở của Freecodecamp đã giúp hơn 40.000 người có được việc làm với tư cách là nhà phát triển. Bắt đầu

Bạn có thể có hai cho các vòng lặp trong một hàm javascript?

TL; DR: Có, trong bộ khởi tạo và vòng lặp (không phải điều kiện), với dấu phẩy.Yes, in the initializer and loop (not the condition) sections, with commas.

Bạn có thể có hai vòng cho các vòng không?

Vòng lặp bên trong hoặc bên ngoài có thể là bất kỳ loại nào, chẳng hạn như vòng lặp hoặc cho vòng lặp.Ví dụ, vòng ngoài cho vòng lặp có thể chứa một vòng lặp trong thời gian và ngược lại.Vòng ngoài có thể chứa nhiều hơn một vòng bên trong.Không có giới hạn về chuỗi vòng.The outer loop can contain more than one inner loop. There is no limitation on the chaining of loops.

Chúng ta có thể sử dụng trong khi vòng lặp bên trong cho vòng lặp trong JavaScript không?

Trong khi lặp lại chỉ có tuyên bố tiếp theo.Nếu bạn cần nó lặp lại nhiều hơn, bạn phải sử dụng một câu lệnh ghép (khối câu lệnh) bằng cách sử dụng niềng răng xoăn.Ở đây, cho vòng lặp sẽ đi một lần cho mỗi hàng;Trong đó, trong khi sẽ đi một lần cho mỗi nhân vật băm.. If you need it to repeat more, you have to use a compound statement (statement block) using the curly braces. Here, for loop will go once for each row; within that, while will go once for each hash character.

Vòng lặp Dowhile trong JavaScript là gì?

DO ... trong khi câu lệnh tạo ra một vòng lặp thực thi một câu lệnh được chỉ định cho đến khi điều kiện kiểm tra đánh giá là sai.Điều kiện được đánh giá sau khi thực hiện câu lệnh, dẫn đến câu lệnh được chỉ định thực thi ít nhất một lần.creates a loop that executes a specified statement until the test condition evaluates to false. The condition is evaluated after executing the statement, resulting in the specified statement executing at least once.