{"id":9412,"date":"2025-04-16T14:34:36","date_gmt":"2025-04-16T07:34:36","guid":{"rendered":"https:\/\/mb668s.com\/cam-nang-7mb66-xoc-dia\/?p=9412"},"modified":"2025-04-16T14:34:37","modified_gmt":"2025-04-16T07:34:37","slug":"foreach-javascript-la-gi","status":"publish","type":"post","link":"https:\/\/mb668s.com\/cam-nang-7mb66-xoc-dia\/tu-van-nghe-nghiep\/foreach-javascript-la-gi","title":{"rendered":"forEach JavaScript l\u00e0 g\u00ec? So s\u00e1nh, v\u00ed d\u1ee5 v\u00e0 \u1ee9ng d\u1ee5ng th\u1ef1c t\u1ebf"},"content":{"rendered":"\n

L\u1eadp tr\u00ecnh v\u1edbi JavaScript kh\u00f4ng ch\u1ec9 l\u00e0 vi\u1ebft ra nh\u1eefng d\u00f2ng l\u1ec7nh ho\u1ea1t \u0111\u1ed9ng, m\u00e0 c\u00f2n l\u00e0 l\u1ef1a ch\u1ecdn \u0111\u00fang c\u00f4ng c\u1ee5 \u0111\u1ec3 m\u00e3 ngu\u1ed3n tr\u1edf n\u00ean r\u00f5 r\u00e0ng v\u00e0 hi\u1ec7u qu\u1ea3 h\u01a1n. Trong qu\u00e1 tr\u00ecnh x\u1eed l\u00fd m\u1ea3ng, c\u00e2u h\u1ecfi forEach JavaScript l\u00e0 g\u00ec<\/strong> th\u01b0\u1eddng xu\u1ea5t hi\u1ec7n nh\u01b0 m\u1ed9t c\u00e1ch m\u1edf \u0111\u1ea7u cho vi\u1ec7c t\u00ecm hi\u1ec3u c\u00e1c ph\u01b0\u01a1ng ph\u00e1p thao t\u00e1c d\u1eef li\u1ec7u tr\u1ef1c quan h\u01a1n. C\u00f9ng kh\u00e1m ph\u00e1 qua b\u00e0i vi\u1ebft sau nh\u00e9.<\/p>\n\n\n\n

\"forEach<\/figure>\n\n\n\n

forEach JavaScript l\u00e0 g\u00ec?<\/h2>\n\n\n\n
\n

forEach() l\u00e0 m\u1ed9t ph\u01b0\u01a1ng th\u1ee9c c\u00f3 s\u1eb5n trong \u0111\u1ed1i t\u01b0\u1ee3ng m\u1ea3ng (Array) c\u1ee7a JavaScript, d\u00f9ng \u0111\u1ec3 l\u1eb7p qua t\u1eebng ph\u1ea7n t\u1eed trong m\u1ea3ng v\u00e0 th\u1ef1c thi m\u1ed9t h\u00e0m callback cho m\u1ed7i ph\u1ea7n t\u1eed \u0111\u00f3.<\/strong><\/p>\n<\/blockquote>\n\n\n\n

\u0110\u00e2y l\u00e0 m\u1ed9t c\u00e1ch vi\u1ebft ng\u1eafn g\u1ecdn v\u00e0 r\u00f5 r\u00e0ng thay th\u1ebf cho v\u00f2ng l\u1eb7p for truy\u1ec1n th\u1ed1ng, \u0111\u1eb7c bi\u1ec7t khi b\u1ea1n ch\u1ec9 mu\u1ed1n th\u1ef1c hi\u1ec7n m\u1ed9t h\u00e0nh \u0111\u1ed9ng n\u00e0o \u0111\u00f3 tr\u00ean t\u1eebng ph\u1ea7n t\u1eed m\u00e0 kh\u00f4ng c\u1ea7n t\u1ea1o ra gi\u00e1 tr\u1ecb m\u1edbi hay tr\u1ea3 v\u1ec1 k\u1ebft qu\u1ea3.<\/p>\n\n\n\n

Ph\u01b0\u01a1ng th\u1ee9c n\u00e0y kh\u00f4ng thay \u0111\u1ed5i m\u1ea3ng g\u1ed1c v\u00e0 kh\u00f4ng tr\u1ea3 v\u1ec1 gi\u00e1 tr\u1ecb (lu\u00f4n tr\u1ea3 v\u1ec1 undefined). forEach() th\u01b0\u1eddng \u0111\u01b0\u1ee3c s\u1eed d\u1ee5ng trong c\u00e1c t\u00e1c v\u1ee5 nh\u01b0 hi\u1ec3n th\u1ecb danh s\u00e1ch, ghi log, thao t\u00e1c DOM ho\u1eb7c th\u1ef1c thi logic \u0111\u01a1n gi\u1ea3n cho t\u1eebng ph\u1ea7n t\u1eed trong m\u1ea3ng.<\/p>\n\n\n\n

C\u00fa ph\u00e1p v\u00e0 c\u00e1ch s\u1eed d\u1ee5ng c\u01a1 b\u1ea3n c\u1ee7a forEach JavaScript<\/h2>\n\n\n\n

Ph\u01b0\u01a1ng th\u1ee9c forEach()<\/code> trong JavaScript \u0111\u01b0\u1ee3c s\u1eed d\u1ee5ng \u0111\u1ec3 l\u1eb7p qua t\u1eebng ph\u1ea7n t\u1eed c\u1ee7a m\u1ea3ng v\u00e0 th\u1ef1c thi m\u1ed9t h\u00e0m callback v\u1edbi m\u1ed7i ph\u1ea7n t\u1eed \u0111\u00f3. \u0110\u00e2y l\u00e0 c\u00e1ch th\u1ee9c l\u1eb7p ph\u1ed5 bi\u1ebfn nh\u1edd c\u00fa ph\u00e1p ng\u1eafn g\u1ecdn, d\u1ec5 \u0111\u1ecdc v\u00e0 ph\u00f9 h\u1ee3p v\u1edbi l\u1eadp tr\u00ecnh h\u00e0m (functional programming).<\/p>\n\n\n\n

C\u00fa ph\u00e1p chu\u1ea9n: array.forEach(callback, thisArg)<\/h3>\n\n\n\n

Ph\u01b0\u01a1ng th\u1ee9c forEach() c\u00f3 c\u00fa ph\u00e1p nh\u01b0 sau:<\/p>\n\n\n\n

javascript<\/p>\n\n\n\n

array.forEach(function callback(currentValue, index, array) {<\/p>\n\n\n\n

  \/\/ thao t\u00e1c v\u1edbi ph\u1ea7n t\u1eed<\/p>\n\n\n\n

}, thisArg);<\/p>\n\n\n\n

Trong \u0111\u00f3:<\/p>\n\n\n\n

array l\u00e0 m\u1ea3ng b\u1ea1n mu\u1ed1n duy\u1ec7t qua.<\/p>\n\n\n\n

callback l\u00e0 h\u00e0m s\u1ebd \u0111\u01b0\u1ee3c th\u1ef1c thi cho m\u1ed7i ph\u1ea7n t\u1eed trong m\u1ea3ng.<\/p>\n\n\n\n

thisArg (t\u00f9y ch\u1ecdn) l\u00e0 gi\u00e1 tr\u1ecb \u0111\u01b0\u1ee3c s\u1eed d\u1ee5ng l\u00e0m this khi th\u1ef1c thi callback.<\/p>\n\n\n\n

Gi\u1ea3i th\u00edch c\u00e1c tham s\u1ed1<\/h3>\n\n\n\n

currentValue: Ph\u1ea7n t\u1eed hi\u1ec7n t\u1ea1i \u0111ang \u0111\u01b0\u1ee3c x\u1eed l\u00fd trong m\u1ea3ng.<\/p>\n\n\n\n

index: Ch\u1ec9 s\u1ed1 (v\u1ecb tr\u00ed) c\u1ee7a ph\u1ea7n t\u1eed hi\u1ec7n t\u1ea1i trong m\u1ea3ng.<\/p>\n\n\n\n

array: Ch\u00ednh m\u1ea3ng \u0111ang \u0111\u01b0\u1ee3c g\u1ecdi forEach() tr\u00ean \u0111\u00f3.<\/p>\n\n\n\n

thisArg (tu\u1ef3 ch\u1ecdn)<\/em>: M\u1ed9t gi\u00e1 tr\u1ecb s\u1ebd \u0111\u01b0\u1ee3c s\u1eed d\u1ee5ng l\u00e0m this trong qu\u00e1 tr\u00ecnh th\u1ef1c thi h\u00e0m callback, th\u01b0\u1eddng \u0111\u01b0\u1ee3c d\u00f9ng khi c\u1ea7n tham chi\u1ebfu \u0111\u1ebfn \u0111\u1ed1i t\u01b0\u1ee3ng b\u00ean ngo\u00e0i.<\/p>\n\n\n\n

L\u01b0u \u00fd: T\u1ea5t c\u1ea3 c\u00e1c tham s\u1ed1 tr\u1eeb thisArg \u0111\u1ec1u \u0111\u01b0\u1ee3c t\u1ef1 \u0111\u1ed9ng truy\u1ec1n v\u00e0o callback theo th\u1ee9 t\u1ef1.<\/p>\n\n\n\n

V\u00ed d\u1ee5 c\u01a1 b\u1ea3n: l\u1eb7p m\u1ea3ng s\u1ed1, m\u1ea3ng chu\u1ed7i<\/h3>\n\n\n\n

D\u01b0\u1edbi \u0111\u00e2y l\u00e0 v\u00ed d\u1ee5 \u0111\u01a1n gi\u1ea3n s\u1eed d\u1ee5ng forEach() \u0111\u1ec3 in ra t\u1eebng ph\u1ea7n t\u1eed trong m\u1ea3ng:<\/p>\n\n\n\n

javascript<\/p>\n\n\n\n

const numbers = [1, 2, 3, 4, 5];<\/p>\n\n\n\n

numbers.forEach(function(number, index) {<\/p>\n\n\n\n

  console.log(`Ph\u1ea7n t\u1eed th\u1ee9 ${index}: ${number}`);<\/p>\n\n\n\n

});<\/p>\n\n\n\n

K\u1ebft qu\u1ea3:<\/p>\n\n\n\n

less<\/p>\n\n\n\n

Ph\u1ea7n t\u1eed th\u1ee9 0: 1<\/p>\n\n\n\n

Ph\u1ea7n t\u1eed th\u1ee9 1: 2<\/p>\n\n\n\n

Ph\u1ea7n t\u1eed th\u1ee9 2: 3<\/p>\n\n\n\n

Ph\u1ea7n t\u1eed th\u1ee9 3: 4<\/p>\n\n\n\n

Ph\u1ea7n t\u1eed th\u1ee9 4: 5<\/p>\n\n\n\n

Ho\u1eb7c v\u1edbi m\u1ea3ng chu\u1ed7i:<\/p>\n\n\n\n

javascript<\/p>\n\n\n\n

const fruits = [“T\u00e1o”, “Chu\u1ed1i”, “Cam”];<\/p>\n\n\n\n

fruits.forEach((fruit) => {<\/p>\n\n\n\n

  console.log(`T\u00f4i th\u00edch \u0103n ${fruit}`);<\/p>\n\n\n\n

});<\/p>\n\n\n\n

K\u1ebft qu\u1ea3:<\/p>\n\n\n\n

css<\/p>\n\n\n\n

T\u00f4i th\u00edch \u0103n T\u00e1o <\/p>\n\n\n\n

T\u00f4i th\u00edch \u0103n Chu\u1ed1i <\/p>\n\n\n\n

T\u00f4i th\u00edch \u0103n Cam<\/p>\n\n\n\n

V\u00ed d\u1ee5 n\u00e2ng cao khi s\u1eed d\u1ee5ng forEach JavaScript<\/h2>\n\n\n\n

Sau khi \u0111\u00e3 n\u1eafm \u0111\u01b0\u1ee3c c\u00e1ch s\u1eed d\u1ee5ng c\u01a1 b\u1ea3n, b\u1ea1n c\u00f3 th\u1ec3 khai th\u00e1c forEach() m\u1ed9t c\u00e1ch linh ho\u1ea1t h\u01a1n trong nh\u1eefng t\u00ecnh hu\u1ed1ng n\u00e2ng cao. D\u01b0\u1edbi \u0111\u00e2y l\u00e0 c\u00e1c v\u00ed d\u1ee5 th\u1ef1c t\u1ebf gi\u00fap b\u1ea1n hi\u1ec3u r\u00f5 c\u00e1ch v\u1eadn d\u1ee5ng forEach() trong nhi\u1ec1u ng\u1eef c\u1ea3nh kh\u00e1c nhau.<\/p>\n\n\n\n

S\u1eed d\u1ee5ng arrow function v\u1edbi forEach()<\/h3>\n\n\n\n

Thay v\u00ec d\u00f9ng function truy\u1ec1n th\u1ed1ng, b\u1ea1n c\u00f3 th\u1ec3 vi\u1ebft ng\u1eafn g\u1ecdn h\u01a1n v\u1edbi arrow function:<\/p>\n\n\n\n

javascript<\/p>\n\n\n\n

const names = [“An”, “B\u00ecnh”, “Chi”];<\/p>\n\n\n\n

names.forEach((name, index) => {<\/p>\n\n\n\n

  console.log(`${index + 1}. ${name}`);<\/p>\n\n\n\n

});<\/p>\n\n\n\n

K\u1ebft qu\u1ea3:<\/p>\n\n\n\n

markdown<\/p>\n\n\n\n

1. An <\/p>\n\n\n\n

2. B\u00ecnh <\/p>\n\n\n\n

3. Chi<\/p>\n\n\n\n

\u27a1\ufe0f Vi\u1ec7c s\u1eed d\u1ee5ng arrow function gi\u00fap m\u00e3 ng\u1eafn g\u1ecdn h\u01a1n v\u00e0 d\u1ec5 \u0111\u1ecdc, \u0111\u1eb7c bi\u1ec7t khi logic x\u1eed l\u00fd \u0111\u01a1n gi\u1ea3n.<\/p>\n\n\n\n

Truy\u1ec1n thisArg \u0111\u1ec3 t\u00f9y bi\u1ebfn ng\u1eef c\u1ea3nh<\/h3>\n\n\n\n

B\u1ea1n c\u00f3 th\u1ec3 truy\u1ec1n m\u1ed9t \u0111\u1ed1i t\u01b0\u1ee3ng l\u00e0m thisArg \u0111\u1ec3 s\u1eed d\u1ee5ng trong h\u00e0m callback:<\/p>\n\n\n\n

javascript<\/p>\n\n\n\n

const counter = {<\/p>\n\n\n\n

  prefix: “Item”,<\/p>\n\n\n\n

};<\/p>\n\n\n\n

const items = [10, 20, 30];<\/p>\n\n\n\n

items.forEach(function (value, index) {<\/p>\n\n\n\n

  console.log(`${this.prefix} ${index + 1}: ${value}`);<\/p>\n\n\n\n

}, counter);<\/p>\n\n\n\n

K\u1ebft qu\u1ea3:<\/p>\n\n\n\n

yaml<\/p>\n\n\n\n

Item 1: 10 <\/p>\n\n\n\n

Item 2: 20 <\/p>\n\n\n\n

Item 3: 30<\/p>\n\n\n\n

\u27a1\ufe0f \u0110\u00e2y l\u00e0 c\u00e1ch hi\u1ec7u qu\u1ea3 khi b\u1ea1n mu\u1ed1n t\u00e1i s\u1eed d\u1ee5ng m\u1ed9t \u0111\u1ed1i t\u01b0\u1ee3ng ho\u1eb7c tham chi\u1ebfu t\u1edbi this b\u00ean ngo\u00e0i trong callback.<\/p>\n\n\n\n

L\u1eb7p qua m\u1ea3ng object<\/h3>\n\n\n\n

forEach() r\u1ea5t ti\u1ec7n l\u1ee3i khi thao t\u00e1c v\u1edbi m\u1ea3ng c\u00e1c object:<\/p>\n\n\n\n

javascript<\/p>\n\n\n\n

const users = [<\/p>\n\n\n\n

  { name: “Mai”, age: 25 },<\/p>\n\n\n\n

  { name: “H\u00f9ng”, age: 30 },<\/p>\n\n\n\n

  { name: “Linh”, age: 22 },<\/p>\n\n\n\n

];<\/p>\n\n\n\n

users.forEach((user) => {<\/p>\n\n\n\n

  console.log(`${user.name} n\u0103m nay ${user.age} tu\u1ed5i.`);<\/p>\n\n\n\n

});<\/p>\n\n\n\n

K\u1ebft qu\u1ea3:<\/p>\n\n\n\n

css<\/p>\n\n\n\n

Mai n\u0103m nay 25 tu\u1ed5i. <\/p>\n\n\n\n

H\u00f9ng n\u0103m nay 30 tu\u1ed5i. <\/p>\n\n\n\n

Linh n\u0103m nay 22 tu\u1ed5i.<\/p>\n\n\n\n

\u27a1\ufe0f \u0110\u00e2y l\u00e0 m\u1ed9t trong nh\u1eefng c\u00e1ch ph\u1ed5 bi\u1ebfn nh\u1ea5t \u0111\u1ec3 hi\u1ec3n th\u1ecb d\u1eef li\u1ec7u trong \u1ee9ng d\u1ee5ng th\u1ef1c t\u1ebf.<\/p>\n\n\n\n

forEach() v\u1edbi m\u1ea3ng l\u1ed3ng nhau<\/h3>\n\n\n\n

Khi m\u1ea3ng ch\u1ee9a c\u00e1c m\u1ea3ng con, b\u1ea1n c\u00f3 th\u1ec3 l\u1ed3ng nhi\u1ec1u v\u00f2ng forEach() \u0111\u1ec3 duy\u1ec7t:<\/p>\n\n\n\n

javascript<\/p>\n\n\n\n

const matrix = [<\/p>\n\n\n\n

  [1, 2],<\/p>\n\n\n\n

  [3, 4],<\/p>\n\n\n\n

  [5, 6],<\/p>\n\n\n\n

];<\/p>\n\n\n\n

matrix.forEach((row, rowIndex) => {<\/p>\n\n\n\n

  row.forEach((value, colIndex) => {<\/p>\n\n\n\n

    console.log(`Ph\u1ea7n t\u1eed t\u1ea1i [${rowIndex}][${colIndex}] = ${value}`);<\/p>\n\n\n\n

  });<\/p>\n\n\n\n

});<\/p>\n\n\n\n

K\u1ebft qu\u1ea3:<\/p>\n\n\n\n

Ph\u1ea7n t\u1eed t\u1ea1i [0][0] = 1 <\/p>\n\n\n\n

Ph\u1ea7n t\u1eed t\u1ea1i [0][1] = 2 <\/p>\n\n\n\n

Ph\u1ea7n t\u1eed t\u1ea1i [1][0] = 3 <\/p>\n\n\n\n

Ph\u1ea7n t\u1eed t\u1ea1i [1][1] = 4 <\/p>\n\n\n\n

Ph\u1ea7n t\u1eed t\u1ea1i [2][0] = 5 <\/p>\n\n\n\n

Ph\u1ea7n t\u1eed t\u1ea1i [2][1] = 6<\/p>\n\n\n\n

\u27a1\ufe0f C\u00e1ch l\u00e0m n\u00e0y r\u1ea5t ph\u00f9 h\u1ee3p khi l\u00e0m vi\u1ec7c v\u1edbi ma tr\u1eadn, b\u1ea3ng d\u1eef li\u1ec7u ho\u1eb7c d\u1eef li\u1ec7u t\u1ed5 ch\u1ee9c d\u1ea1ng ph\u00e2n c\u1ea5p.<\/p>\n\n\n\n

\u1ee8ng d\u1ee5ng th\u1ef1c t\u1ebf trong thao t\u00e1c DOM, d\u1eef li\u1ec7u JSON<\/h3>\n\n\n\n

Ph\u01b0\u01a1ng th\u1ee9c forEach() th\u01b0\u1eddng xuy\u00ean \u0111\u01b0\u1ee3c s\u1eed d\u1ee5ng trong c\u00e1c t\u00e1c v\u1ee5 t\u01b0\u01a1ng t\u00e1c v\u1edbi giao di\u1ec7n ng\u01b0\u1eddi d\u00f9ng (DOM) ho\u1eb7c x\u1eed l\u00fd d\u1eef li\u1ec7u t\u1eeb API tr\u1ea3 v\u1ec1 d\u1ea1ng JSON. D\u01b0\u1edbi \u0111\u00e2y l\u00e0 hai v\u00ed d\u1ee5 ti\u00eau bi\u1ec3u:<\/p>\n\n\n\n

\u2714\ufe0f V\u00ed d\u1ee5 1: Th\u00eam danh s\u00e1ch m\u1ee5c v\u00e0o giao di\u1ec7n HTML<\/p>\n\n\n\n

html<\/p>\n\n\n\n

<ul id=”fruits-list”><\/ul><\/p>\n\n\n\n

javascript<\/p>\n\n\n\n

const fruits = [“T\u00e1o”, “Chu\u1ed1i”, “D\u01b0a h\u1ea5u”];<\/p>\n\n\n\n

const list = document.getElementById(“fruits-list”);<\/p>\n\n\n\n

fruits.forEach((fruit) => {<\/p>\n\n\n\n

  const li = document.createElement(“li”);<\/p>\n\n\n\n

  li.textContent = fruit;<\/p>\n\n\n\n

  list.appendChild(li);<\/p>\n\n\n\n

});<\/p>\n\n\n\n

\u27a1\ufe0f M\u1ed7i ph\u1ea7n t\u1eed trong m\u1ea3ng s\u1ebd \u0111\u01b0\u1ee3c chuy\u1ec3n th\u00e0nh m\u1ed9t th\u1ebb <li> v\u00e0 hi\u1ec3n th\u1ecb l\u00ean tr\u00ecnh duy\u1ec7t.<\/p>\n\n\n\n

\u2714\ufe0f V\u00ed d\u1ee5 2: Duy\u1ec7t qua d\u1eef li\u1ec7u JSON t\u1eeb API<\/p>\n\n\n\n

Gi\u1ea3 s\u1eed b\u1ea1n nh\u1eadn \u0111\u01b0\u1ee3c d\u1eef li\u1ec7u ng\u01b0\u1eddi d\u00f9ng t\u1eeb API nh\u01b0 sau:<\/p>\n\n\n\n

javascript<\/p>\n\n\n\n

const response = [<\/p>\n\n\n\n

  { id: 1, name: “Lan” },<\/p>\n\n\n\n

  { id: 2, name: “Minh” },<\/p>\n\n\n\n

  { id: 3, name: “Ph\u00fac” }<\/p>\n\n\n\n

];<\/p>\n\n\n\n

response.forEach((user) => {<\/p>\n\n\n\n

  console.log(`ID: ${user.id}, T\u00ean: ${user.name}`);<\/p>\n\n\n\n

});<\/p>\n\n\n\n

\u27a1\ufe0f forEach() gi\u00fap b\u1ea1n x\u1eed l\u00fd t\u1eebng object trong m\u1ea3ng m\u1ed9t c\u00e1ch tr\u1ef1c quan, thu\u1eadn ti\u1ec7n \u0111\u1ec3 hi\u1ec3n th\u1ecb, l\u1ecdc ho\u1eb7c thao t\u00e1c s\u00e2u h\u01a1n trong \u1ee9ng d\u1ee5ng web.<\/p>\n\n\n\n

\n

Xem th\u00eam: T\u00ecm vi\u1ec7c Java<\/a> ta\u0323i Careerlink.vn<\/p>\n<\/blockquote>\n\n\n\n

\u01afu \u0111i\u1ec3m v\u00e0 nh\u01b0\u1ee3c \u0111i\u1ec3m c\u1ee7a forEach JavaScript<\/h2>\n\n\n\n

Ph\u01b0\u01a1ng th\u1ee9c forEach() ng\u00e0y c\u00e0ng tr\u1edf n\u00ean ph\u1ed5 bi\u1ebfn trong l\u1eadp tr\u00ecnh JavaScript hi\u1ec7n \u0111\u1ea1i, \u0111\u1eb7c bi\u1ec7t l\u00e0 trong c\u00e1c \u1ee9ng d\u1ee5ng web. V\u1edbi c\u00fa ph\u00e1p ng\u1eafn g\u1ecdn v\u00e0 kh\u1ea3 n\u0103ng di\u1ec5n \u0111\u1ea1t r\u00f5 r\u00e0ng \u00fd \u0111\u1ed3 l\u1eadp tr\u00ecnh, forEach() gi\u00fap l\u1eadp tr\u00ecnh vi\u00ean d\u1ec5 d\u00e0ng thao t\u00e1c v\u1edbi d\u1eef li\u1ec7u v\u00e0 x\u1eed l\u00fd logic t\u1eebng ph\u1ea7n t\u1eed c\u1ee7a m\u1ea3ng m\u00e0 kh\u00f4ng c\u1ea7n \u0111\u1ebfn c\u00e1c v\u00f2ng l\u1eb7p ph\u1ee9c t\u1ea1p.<\/p>\n\n\n\n

Tuy nhi\u00ean, gi\u1ed1ng nh\u01b0 b\u1ea5t k\u1ef3 c\u00f4ng c\u1ee5 n\u00e0o kh\u00e1c, forEach() c\u0169ng c\u00f3 nh\u1eefng \u0111i\u1ec3m m\u1ea1nh n\u1ed5i b\u1eadt v\u00e0 m\u1eb7t h\u1ea1n ch\u1ebf c\u1ea7n l\u01b0u \u00fd khi s\u1eed d\u1ee5ng.<\/p>\n\n\n\n

\u01afu \u0111i\u1ec3m forEach JavaScript<\/h3>\n\n\n\n

C\u00fa ph\u00e1p \u0111\u01a1n gi\u1ea3n, d\u1ec5 h\u1ecdc, d\u1ec5 vi\u1ebft:<\/strong>
So v\u1edbi v\u00f2ng l\u1eb7p for truy\u1ec1n th\u1ed1ng, forEach() gi\u00fap r\u00fat g\u1ecdn \u0111\u00e1ng k\u1ec3 s\u1ed1 d\u00f2ng m\u00e3 v\u00e0 tr\u00e1nh nh\u1eefng l\u1ed7i li\u00ean quan \u0111\u1ebfn bi\u1ebfn \u0111\u1ebfm ho\u1eb7c \u0111i\u1ec1u ki\u1ec7n d\u1eebng kh\u00f4ng ch\u00ednh x\u00e1c.<\/p>\n\n\n\n

T\u0103ng t\u00ednh r\u00f5 r\u00e0ng, d\u1ec5 \u0111\u1ecdc:<\/strong>
forEach() gi\u00fap ng\u01b0\u1eddi \u0111\u1ecdc d\u1ec5 d\u00e0ng hi\u1ec3u r\u1eb1ng \u0111o\u1ea1n m\u00e3 \u0111ang th\u1ef1c hi\u1ec7n m\u1ed9t h\u00e0nh \u0111\u1ed9ng cho t\u1eebng ph\u1ea7n t\u1eed c\u1ee7a m\u1ea3ng. \u0110\u00e2y l\u00e0 m\u1ed9t c\u00e1ch th\u1ec3 hi\u1ec7n \u00fd \u0111\u1ecbnh l\u1eadp tr\u00ecnh r\u00f5 r\u00e0ng, \u0111\u1eb7c bi\u1ec7t h\u1eefu \u00edch trong m\u00f4i tr\u01b0\u1eddng l\u00e0m vi\u1ec7c nh\u00f3m.<\/p>\n\n\n\n

Tr\u00e1nh l\u1ed7i ngo\u00e0i ch\u1ec9 s\u1ed1 m\u1ea3ng:<\/strong>
V\u00ec kh\u00f4ng c\u1ea7n x\u1eed l\u00fd ch\u1ec9 s\u1ed1 m\u1ed9t c\u00e1ch th\u1ee7 c\u00f4ng nh\u01b0 for (let i = 0; i < arr.length; i++), n\u00ean nguy c\u01a1 v\u01b0\u1ee3t ch\u1ec9 s\u1ed1 m\u1ea3ng ho\u1eb7c sai logic \u0111i\u1ec1u ki\u1ec7n gi\u1ea3m \u0111i \u0111\u00e1ng k\u1ec3.<\/p>\n\n\n\n

Nh\u01b0\u1ee3c \u0111i\u1ec3m forEach JavaScript<\/h3>\n\n\n\n

Kh\u00f4ng th\u1ec3 s\u1eed d\u1ee5ng <\/strong>break<\/strong>, <\/strong>continue<\/strong> hay <\/strong>return<\/strong> \u0111\u1ec3 tho\u00e1t s\u1edbm:<\/strong>
Kh\u00e1c v\u1edbi v\u00f2ng l\u1eb7p for hay for…of, b\u1ea1n kh\u00f4ng th\u1ec3 tho\u00e1t kh\u1ecfi v\u00f2ng l\u1eb7p forEach() m\u1ed9t c\u00e1ch ch\u1ee7 \u0111\u1ed9ng khi \u0111\u1ea1t \u0111i\u1ec1u ki\u1ec7n n\u00e0o \u0111\u00f3. \u0110i\u1ec1u n\u00e0y g\u00e2y b\u1ea5t ti\u1ec7n trong m\u1ed9t s\u1ed1 tr\u01b0\u1eddng h\u1ee3p c\u1ea7n d\u1eebng s\u1edbm.<\/p>\n\n\n\n

Kh\u00f4ng tr\u1ea3 v\u1ec1 gi\u00e1 tr\u1ecb (lu\u00f4n tr\u1ea3 v\u1ec1 <\/strong>undefined<\/strong>):<\/strong>
forEach() ch\u1ec9 d\u00f9ng \u0111\u1ec3 th\u1ef1c thi h\u00e0nh \u0111\u1ed9ng tr\u00ean t\u1eebng ph\u1ea7n t\u1eed ch\u1ee9 kh\u00f4ng t\u1ea1o ra m\u1ea3ng m\u1edbi. V\u00ec v\u1eady, b\u1ea1n kh\u00f4ng th\u1ec3 s\u1eed d\u1ee5ng n\u00f3 \u0111\u1ec3 \u201cbi\u1ebfn \u0111\u1ed5i\u201d d\u1eef li\u1ec7u gi\u1ed1ng nh\u01b0 map().<\/p>\n\n\n\n

Kh\u00f4ng ho\u1ea1t \u0111\u1ed9ng tr\u1ef1c ti\u1ebfp v\u1edbi <\/strong>async\/await<\/strong>:<\/strong>
N\u1ebfu b\u1ea1n s\u1eed d\u1ee5ng await trong callback c\u1ee7a forEach(), h\u00e0m s\u1ebd kh\u00f4ng \u0111\u1ee3i t\u1eebng b\u01b0\u1edbc ho\u00e0n th\u00e0nh m\u00e0 ti\u1ebfp t\u1ee5c ch\u1ea1y tu\u1ea7n t\u1ef1. \u0110i\u1ec1u n\u00e0y khi\u1ebfn vi\u1ec7c x\u1eed l\u00fd b\u1ea5t \u0111\u1ed3ng b\u1ed9 tr\u1edf n\u00ean kh\u00f3 ki\u1ec3m so\u00e1t n\u1ebfu kh\u00f4ng d\u00f9ng c\u00e1c gi\u1ea3i ph\u00e1p thay th\u1ebf nh\u01b0 for…of k\u1ebft h\u1ee3p await.<\/p>\n\n\n\n

So s\u00e1nh forEach JavaScript v\u1edbi c\u00e1c ph\u01b0\u01a1ng th\u1ee9c l\u1eb7p kh\u00e1c<\/h2>\n\n\n\n

JavaScript cung c\u1ea5p nhi\u1ec1u c\u00e1ch \u0111\u1ec3 l\u1eb7p qua c\u00e1c ph\u1ea7n t\u1eed trong m\u1ea3ng, m\u1ed7i c\u00e1ch c\u00f3 \u01b0u v\u00e0 nh\u01b0\u1ee3c \u0111i\u1ec3m ri\u00eang. Vi\u1ec7c hi\u1ec3u r\u00f5 s\u1ef1 kh\u00e1c bi\u1ec7t gi\u1eefa forEach() v\u00e0 c\u00e1c ph\u01b0\u01a1ng th\u1ee9c kh\u00e1c s\u1ebd gi\u00fap b\u1ea1n ch\u1ecdn \u0111\u01b0\u1ee3c gi\u1ea3i ph\u00e1p ph\u00f9 h\u1ee3p nh\u1ea5t v\u1edbi m\u1ee5c \u0111\u00edch s\u1eed d\u1ee5ng.<\/p>\n\n\n\n

for v\u00e0 for…of vs forEach()<\/h3>\n\n\n\n

for l\u00e0 v\u00f2ng l\u1eb7p truy\u1ec1n th\u1ed1ng, cho ph\u00e9p b\u1ea1n ki\u1ec3m so\u00e1t ho\u00e0n to\u00e0n ch\u1ec9 s\u1ed1, \u0111i\u1ec1u ki\u1ec7n d\u1eebng, v\u00e0 s\u1eed d\u1ee5ng break ho\u1eb7c continue.<\/p>\n\n\n\n

for…of \u0111\u01a1n gi\u1ea3n h\u01a1n, ph\u00f9 h\u1ee3p \u0111\u1ec3 duy\u1ec7t m\u1ea3ng theo th\u1ee9 t\u1ef1 ph\u1ea7n t\u1eed nh\u01b0ng kh\u00f4ng c\u00f3 ch\u1ec9 s\u1ed1 (index) nh\u01b0 forEach().<\/p>\n\n\n\n

forEach() gi\u00fap m\u00e3 ng\u1eafn g\u1ecdn, d\u1ec5 \u0111\u1ecdc h\u01a1n nh\u01b0ng kh\u00f4ng th\u1ec3 d\u1eebng v\u00f2ng l\u1eb7p s\u1edbm.<\/p>\n\n\n\n

V\u00ed d\u1ee5 so s\u00e1nh:<\/p>\n\n\n\n

javascript<\/p>\n\n\n\n

\/\/ for<\/p>\n\n\n\n

for (let i = 0; i < arr.length; i++) {<\/p>\n\n\n\n

  if (arr[i] === 3) break;<\/p>\n\n\n\n

}<\/p>\n\n\n\n

\/\/ forEach (kh\u00f4ng th\u1ec3 break)<\/p>\n\n\n\n

arr.forEach((num) => {<\/p>\n\n\n\n

  if (num === 3) return; \/\/ ch\u1ec9 tho\u00e1t kh\u1ecfi callback, kh\u00f4ng d\u1eebng v\u00f2ng l\u1eb7p<\/p>\n\n\n\n

});<\/p>\n\n\n\n

\u27a1\ufe0f D\u00f9ng for ho\u1eb7c for…of khi c\u1ea7n d\u1eebng v\u00f2ng l\u1eb7p gi\u1eefa ch\u1eebng.<\/p>\n\n\n\n

map() vs forEach()<\/h3>\n\n\n\n

map() t\u1ea1o ra m\u1ed9t m\u1ea3ng m\u1edbi t\u1eeb k\u1ebft qu\u1ea3 c\u1ee7a callback, d\u00f9ng khi b\u1ea1n mu\u1ed1n bi\u1ebfn \u0111\u1ed5i d\u1eef li\u1ec7u.<\/p>\n\n\n\n

forEach() ch\u1ec9 th\u1ef1c thi logic, kh\u00f4ng tr\u1ea3 v\u1ec1 m\u1ea3ng m\u1edbi.<\/p>\n\n\n\n

V\u00ed d\u1ee5:<\/p>\n\n\n\n

javascript<\/p>\n\n\n\n

const numbers = [1, 2, 3];<\/p>\n\n\n\n

\/\/ map<\/p>\n\n\n\n

const doubled = numbers.map(num => num * 2); \/\/ [2, 4, 6]<\/p>\n\n\n\n

\/\/ forEach<\/p>\n\n\n\n

const result = [];<\/p>\n\n\n\n

numbers.forEach(num => result.push(num * 2)); \/\/ [2, 4, 6]<\/p>\n\n\n\n

\u27a1\ufe0f N\u1ebfu m\u1ee5c \u0111\u00edch l\u00e0 x\u1eed l\u00fd v\u00e0 tr\u1ea3 v\u1ec1 m\u1ea3ng m\u1edbi \u2192 d\u00f9ng map(). N\u1ebfu ch\u1ec9 c\u1ea7n thao t\u00e1c ph\u1ee5 \u2192 d\u00f9ng forEach().<\/p>\n\n\n\n

filter() v\u00e0 reduce() vs forEach()<\/h3>\n\n\n\n

filter() d\u00f9ng \u0111\u1ec3 l\u1ecdc ph\u1ea7n t\u1eed th\u1ecfa m\u00e3n \u0111i\u1ec1u ki\u1ec7n, tr\u1ea3 v\u1ec1 m\u1ea3ng m\u1edbi.<\/p>\n\n\n\n

reduce() d\u00f9ng \u0111\u1ec3 t\u00ednh to\u00e1n t\u00edch l\u0169y nh\u01b0 t\u1ed5ng, trung b\u00ecnh, n\u1ed1i chu\u1ed7i\u2026<\/p>\n\n\n\n

forEach() kh\u00f4ng tr\u1ea3 v\u1ec1 gi\u00e1 tr\u1ecb, kh\u00f4ng ph\u00f9 h\u1ee3p cho l\u1ecdc ho\u1eb7c t\u00edch l\u0169y.<\/p>\n\n\n\n

V\u00ed d\u1ee5:<\/p>\n\n\n\n

javascript<\/p>\n\n\n\n

const nums = [1, 2, 3, 4, 5];<\/p>\n\n\n\n

\/\/ filter<\/p>\n\n\n\n

const even = nums.filter(n => n % 2 === 0); \/\/ [2, 4]<\/p>\n\n\n\n

\/\/ reduce<\/p>\n\n\n\n

const total = nums.reduce((sum, n) => sum + n, 0); \/\/ 15<\/p>\n\n\n\n

\/\/ forEach kh\u00f4ng tr\u1ea3 v\u1ec1 g\u00ec<\/p>\n\n\n\n

let sum = 0;<\/p>\n\n\n\n

nums.forEach(n => sum += n); \/\/ sum = 15<\/p>\n\n\n\n

\u27a1\ufe0f S\u1eed d\u1ee5ng filter() ho\u1eb7c reduce() khi b\u1ea1n c\u1ea7n k\u1ebft qu\u1ea3 tr\u1ea3 v\u1ec1, thay v\u00ec ch\u1ec9 th\u1ef1c hi\u1ec7n h\u00e0nh \u0111\u1ed9ng.<\/p>\n\n\n\n

G\u1ee3i \u00fd khi n\u00e0o n\u00ean d\u00f9ng forEach()<\/h3>\n\n\n\n

B\u1ea1n n\u00ean ch\u1ecdn forEach() khi:<\/p>\n\n\n\n

Mu\u1ed1n th\u1ef1c hi\u1ec7n h\u00e0nh \u0111\u1ed9ng ph\u1ee5 tr\u00ean t\u1eebng ph\u1ea7n t\u1eed (hi\u1ec3n th\u1ecb, ghi log, thay \u0111\u1ed5i DOM\u2026).<\/p>\n\n\n\n

Kh\u00f4ng c\u1ea7n d\u1eebng v\u00f2ng l\u1eb7p gi\u1eefa ch\u1eebng.<\/p>\n\n\n\n

Kh\u00f4ng c\u1ea7n tr\u1ea3 v\u1ec1 gi\u00e1 tr\u1ecb t\u1eeb callback.<\/p>\n\n\n\n

\u01afu ti\u00ean s\u1ef1 r\u00f5 r\u00e0ng, d\u1ec5 \u0111\u1ecdc trong code \u2013 \u0111\u1eb7c bi\u1ec7t v\u1edbi c\u00e1c m\u1ea3ng c\u00f3 k\u00edch th\u01b0\u1edbc nh\u1ecf ho\u1eb7c v\u1eeba.<\/p>\n\n\n\n

Trong khi \u0111\u00f3, v\u1edbi c\u00e1c thao t\u00e1c ph\u1ee9c t\u1ea1p h\u01a1n nh\u01b0 t\u1ea1o m\u1ea3ng m\u1edbi, l\u1ecdc \u0111i\u1ec1u ki\u1ec7n, ho\u1eb7c x\u1eed l\u00fd b\u1ea5t \u0111\u1ed3ng b\u1ed9, b\u1ea1n n\u00ean c\u00e2n nh\u1eafc s\u1eed d\u1ee5ng c\u00e1c ph\u01b0\u01a1ng th\u1ee9c kh\u00e1c nh\u01b0 map(), filter(), reduce(), ho\u1eb7c for…of.<\/p>\n\n\n\n

C\u00e1c l\u1ed7i th\u01b0\u1eddng g\u1eb7p khi s\u1eed d\u1ee5ng forEach JavaScript<\/h2>\n\n\n\n

D\u00f9 l\u00e0 m\u1ed9t c\u00f4ng c\u1ee5 h\u1eefu \u00edch v\u00e0 d\u1ec5 s\u1eed d\u1ee5ng, forEach() trong JavaScript v\u1eabn t\u1ed3n t\u1ea1i m\u1ed9t s\u1ed1 \u0111i\u1ec3m d\u1ec5 g\u00e2y hi\u1ec3u nh\u1ea7m ho\u1eb7c l\u1ed7i logic cho ng\u01b0\u1eddi m\u1edbi b\u1eaft \u0111\u1ea7u. D\u01b0\u1edbi \u0111\u00e2y l\u00e0 nh\u1eefng l\u01b0u \u00fd quan tr\u1ecdng v\u00e0 l\u1ed7i ph\u1ed5 bi\u1ebfn m\u00e0 b\u1ea1n c\u1ea7n tr\u00e1nh khi l\u00e0m vi\u1ec7c v\u1edbi ph\u01b0\u01a1ng th\u1ee9c n\u00e0y.<\/p>\n\n\n\n

D\u00f9ng forEach() v\u1edbi async\/await<\/h3>\n\n\n\n

M\u1ed9t l\u1ed7i r\u1ea5t th\u01b0\u1eddng g\u1eb7p l\u00e0 s\u1eed d\u1ee5ng async\/await b\u00ean trong forEach() v\u1edbi k\u1ef3 v\u1ecdng r\u1eb1ng n\u00f3 s\u1ebd \u0111\u1ee3i ho\u00e0n t\u1ea5t t\u1eebng thao t\u00e1c b\u1ea5t \u0111\u1ed3ng b\u1ed9:<\/p>\n\n\n\n

javascript<\/p>\n\n\n\n

const tasks = [1, 2, 3];<\/p>\n\n\n\n

tasks.forEach(async (task) => {<\/p>\n\n\n\n

  await doSomething(task); \/\/ Kh\u00f4ng ho\u1ea1t \u0111\u1ed9ng nh\u01b0 mong \u0111\u1ee3i<\/p>\n\n\n\n

});<\/p>\n\n\n\n

\u27a1\ufe0f Sai l\u1ea7m: forEach() kh\u00f4ng ch\u1edd c\u00e1c Promise ho\u00e0n th\u00e0nh. V\u00f2ng l\u1eb7p v\u1eabn ti\u1ebfp t\u1ee5c m\u00e0 kh\u00f4ng quan t\u00e2m \u0111\u1ebfn await.<\/p>\n\n\n\n

\u2705 C\u00e1ch kh\u1eafc ph\u1ee5c: D\u00f9ng for…of thay th\u1ebf khi c\u1ea7n x\u1eed l\u00fd b\u1ea5t \u0111\u1ed3ng b\u1ed9 c\u00f3 tu\u1ea7n t\u1ef1:<\/p>\n\n\n\n

javascript<\/p>\n\n\n\n

for (const task of tasks) {<\/p>\n\n\n\n

  await doSomething(task); \/\/ \u0110\u1ea3m b\u1ea3o ch\u1ea1y tu\u1ea7n t\u1ef1<\/p>\n\n\n\n

}<\/p>\n\n\n\n

Nh\u1ea7m l\u1eabn gi\u1eefa map() v\u00e0 forEach()<\/h3>\n\n\n\n

M\u1ed9t l\u1ed7i ph\u1ed5 bi\u1ebfn kh\u00e1c l\u00e0 d\u00f9ng forEach() khi th\u1ef1c ra c\u1ea7n s\u1eed d\u1ee5ng map():<\/p>\n\n\n\n

javascript<\/p>\n\n\n\n

const numbers = [1, 2, 3];<\/p>\n\n\n\n

const doubled = numbers.forEach(num => num * 2); \/\/ doubled === undefined<\/p>\n\n\n\n

\u27a1\ufe0f L\u00fd do: forEach() kh\u00f4ng tr\u1ea3 v\u1ec1 gi\u00e1 tr\u1ecb \u2192 kh\u00f4ng th\u1ec3 g\u00e1n k\u1ebft qu\u1ea3 v\u00e0o bi\u1ebfn nh\u01b0 map().<\/p>\n\n\n\n

\u2705 Gi\u1ea3i ph\u00e1p: D\u00f9ng map() khi c\u1ea7n x\u1eed l\u00fd t\u1eebng ph\u1ea7n t\u1eed v\u00e0 thu \u0111\u01b0\u1ee3c k\u1ebft qu\u1ea3:<\/p>\n\n\n\n

javascript<\/p>\n\n\n\n

const doubled = numbers.map(num => num * 2); \/\/ [2, 4, 6]<\/p>\n\n\n\n

Duy\u1ec7t m\u1ea3ng r\u1ed7ng ho\u1eb7c m\u1ea3ng l\u1ed3ng nhau sai c\u00e1ch<\/h3>\n\n\n\n

forEach() kh\u00f4ng ch\u1ea1y callback n\u1ebfu m\u1ea3ng r\u1ed7ng. Ng\u01b0\u1eddi m\u1edbi d\u1ec5 ngh\u0129 r\u1eb1ng h\u00e0m kh\u00f4ng ho\u1ea1t \u0111\u1ed9ng.<\/p>\n\n\n\n

Khi l\u00e0m vi\u1ec7c v\u1edbi m\u1ea3ng l\u1ed3ng nhau, kh\u00f4ng x\u1eed l\u00fd \u0111\u00fang s\u1ebd d\u1eabn \u0111\u1ebfn l\u1ed7i logic ho\u1eb7c kh\u00f4ng duy\u1ec7t \u0111\u1ee7 ph\u1ea7n t\u1eed.<\/p>\n\n\n\n

V\u00ed d\u1ee5 sai:<\/p>\n\n\n\n

javascript<\/p>\n\n\n\n

const nested = [[1, 2], [3, 4]];<\/p>\n\n\n\n

nested.forEach((row) => {<\/p>\n\n\n\n

  console.log(row); \/\/ Ch\u1ec9 in ra m\u1ea3ng con, kh\u00f4ng in t\u1eebng gi\u00e1 tr\u1ecb<\/p>\n\n\n\n

});<\/p>\n\n\n\n

\u2705 Gi\u1ea3i ph\u00e1p: D\u00f9ng forEach() l\u1ed3ng nhau \u0111\u1ec3 duy\u1ec7t ch\u00ednh x\u00e1c:<\/p>\n\n\n\n

javascript<\/p>\n\n\n\n

nested.forEach((row) => {<\/p>\n\n\n\n

  row.forEach((val) => console.log(val)); \/\/ 1 2 3 4<\/p>\n\n\n\n

});<\/p>\n\n\n\n

Kh\u00f4ng nh\u1eadn ra callback kh\u00f4ng c\u00f3 gi\u00e1 tr\u1ecb tr\u1ea3 v\u1ec1<\/h3>\n\n\n\n

V\u00ec forEach() kh\u00f4ng tr\u1ea3 v\u1ec1 b\u1ea5t k\u1ef3 gi\u00e1 tr\u1ecb n\u00e0o t\u1eeb callback, ng\u01b0\u1eddi d\u00f9ng d\u1ec5 b\u1ecb nh\u1ea7m l\u1eabn r\u1eb1ng m\u00ecnh c\u00f3 th\u1ec3 d\u00f9ng return nh\u01b0 trong map() ho\u1eb7c filter().<\/p>\n\n\n\n

javascript<\/p>\n\n\n\n

const result = [1, 2, 3].forEach(num => {<\/p>\n\n\n\n

  return num * 2;<\/p>\n\n\n\n

});<\/p>\n\n\n\n

console.log(result); \/\/ undefined<\/p>\n\n\n\n

\u27a1\ufe0f \u0110o\u1ea1n m\u00e3 tr\u00ean kh\u00f4ng t\u1ea1o ra m\u1ea3ng m\u1edbi, result ch\u1ec9 l\u00e0 undefined.<\/p>\n\n\n\n

\u2705 H\u00e3y nh\u1edb r\u1eb1ng: forEach() ph\u00f9 h\u1ee3p cho th\u1ef1c hi\u1ec7n h\u00e0nh \u0111\u1ed9ng ph\u1ee5, kh\u00f4ng d\u00f9ng \u0111\u1ec3 x\u1eed l\u00fd v\u00e0 thu k\u1ebft qu\u1ea3.<\/p>\n\n\n\n

C\u00e1c c\u00e2u h\u1ecfi th\u01b0\u1eddng g\u1eb7p v\u1ec1 forEach JavaScript<\/h2>\n\n\n\n

D\u00f9 \u0111\u01b0\u1ee3c \u0111\u00e1nh gi\u00e1 l\u00e0 d\u1ec5 s\u1eed d\u1ee5ng, nh\u01b0ng trong qu\u00e1 tr\u00ecnh l\u00e0m vi\u1ec7c th\u1ef1c t\u1ebf, forEach() v\u1eabn th\u01b0\u1eddng \u0111\u1eb7t ra m\u1ed9t s\u1ed1 c\u00e2u h\u1ecfi ph\u1ed5 bi\u1ebfn cho c\u1ea3 ng\u01b0\u1eddi m\u1edbi h\u1ecdc l\u1eabn l\u1eadp tr\u00ecnh vi\u00ean c\u00f3 kinh nghi\u1ec7m. D\u01b0\u1edbi \u0111\u00e2y l\u00e0 hai c\u00e2u h\u1ecfi n\u1ed5i b\u1eadt c\u1ea7n l\u00e0m r\u00f5.<\/p>\n\n\n\n

D\u00f9ng forEach() l\u1ed3ng nhau c\u00f3 \u0111\u01b0\u1ee3c kh\u00f4ng?<\/em><\/strong><\/p>\n\n\n\n

C\u00e2u tr\u1ea3 l\u1eddi l\u00e0 c\u00f3. forEach() c\u00f3 th\u1ec3 \u0111\u01b0\u1ee3c s\u1eed d\u1ee5ng l\u1ed3ng nhau \u0111\u1ec3 duy\u1ec7t qua c\u00e1c m\u1ea3ng hai chi\u1ec1u ho\u1eb7c d\u1eef li\u1ec7u d\u1ea1ng l\u1ed3ng nhau (m\u1ea3ng ch\u1ee9a m\u1ea3ng). Tuy nhi\u00ean, khi tri\u1ec3n khai, b\u1ea1n c\u1ea7n x\u00e1c \u0111\u1ecbnh r\u00f5 c\u1ea5p \u0111\u1ed9 d\u1eef li\u1ec7u v\u00e0 \u0111\u1ea3m b\u1ea3o r\u1eb1ng logic x\u1eed l\u00fd trong t\u1eebng v\u00f2ng l\u1eb7p l\u00e0 ch\u00ednh x\u00e1c. N\u1ebfu d\u1eef li\u1ec7u c\u00f3 nhi\u1ec1u l\u1edbp l\u1ed3ng nhau, vi\u1ec7c s\u1eed d\u1ee5ng \u0111\u1ec7 quy ho\u1eb7c c\u00e1c ph\u01b0\u01a1ng ph\u00e1p x\u1eed l\u00fd chuy\u00ean bi\u1ec7t s\u1ebd hi\u1ec7u qu\u1ea3 v\u00e0 d\u1ec5 qu\u1ea3n l\u00fd h\u01a1n l\u00e0 l\u1ed3ng qu\u00e1 nhi\u1ec1u v\u00f2ng forEach().<\/p>\n\n\n\n

forEach() c\u00f3 \u1ea3nh h\u01b0\u1edfng \u0111\u1ebfn hi\u1ec7u n\u0103ng kh\u00f4ng?<\/em><\/strong><\/p>\n\n\n\n

V\u1ec1 m\u1eb7t hi\u1ec7u su\u1ea5t, forEach() ho\u00e0n to\u00e0n \u0111\u00e1p \u1ee9ng t\u1ed1t cho h\u1ea7u h\u1ebft c\u00e1c tr\u01b0\u1eddng h\u1ee3p s\u1eed d\u1ee5ng th\u00f4ng th\u01b0\u1eddng. Tuy nhi\u00ean, n\u1ebfu l\u00e0m vi\u1ec7c v\u1edbi t\u1eadp d\u1eef li\u1ec7u r\u1ea5t l\u1edbn ho\u1eb7c c\u1ea7n t\u1ed1i \u01b0u h\u00f3a \u0111\u1ebfn t\u1eebng mili gi\u00e2y, b\u1ea1n c\u00f3 th\u1ec3 xem x\u00e9t s\u1eed d\u1ee5ng c\u00e1c v\u00f2ng l\u1eb7p nh\u01b0 for ho\u1eb7c for…of, v\u1ed1n c\u00f3 t\u1ed1c \u0111\u1ed9 x\u1eed l\u00fd nhanh h\u01a1n do kh\u00f4ng s\u1eed d\u1ee5ng callback function. Ngo\u00e0i ra, n\u1ebfu c\u1ea7n thao t\u00e1c b\u1ea5t \u0111\u1ed3ng b\u1ed9 m\u1ed9t c\u00e1ch tu\u1ea7n t\u1ef1, forEach() kh\u00f4ng ph\u1ea3i l\u00e0 l\u1ef1a ch\u1ecdn l\u00fd t\u01b0\u1edfng, v\u00ec n\u00f3 kh\u00f4ng t\u01b0\u01a1ng th\u00edch tr\u1ef1c ti\u1ebfp v\u1edbi async\/await.<\/p>\n\n\n\n

T\u00f3m l\u1ea1i, forEach() l\u00e0 c\u00f4ng c\u1ee5 hi\u1ec7u qu\u1ea3 khi thao t\u00e1c v\u1edbi t\u1eebng ph\u1ea7n t\u1eed trong m\u1ea3ng m\u00e0 kh\u00f4ng c\u1ea7n k\u1ebft qu\u1ea3 tr\u1ea3 v\u1ec1. Nh\u1edd c\u00fa ph\u00e1p ng\u1eafn g\u1ecdn v\u00e0 t\u00ednh r\u00f5 r\u00e0ng, n\u00f3 th\u01b0\u1eddng \u0111\u01b0\u1ee3c d\u00f9ng trong c\u00e1c t\u00ecnh hu\u1ed1ng x\u1eed l\u00fd d\u1eef li\u1ec7u giao di\u1ec7n ho\u1eb7c l\u1eb7p tu\u1ea7n t\u1ef1. Tuy v\u1eady, vi\u1ec7c s\u1eed d\u1ee5ng \u0111\u00fang ng\u1eef c\u1ea3nh l\u00e0 \u0111i\u1ec1u c\u1ea7n thi\u1ebft, \u0111\u1eb7c bi\u1ec7t khi l\u00e0m vi\u1ec7c v\u1edbi b\u1ea5t \u0111\u1ed3ng b\u1ed9 ho\u1eb7c y\u00eau c\u1ea7u tho\u00e1t s\u1edbm kh\u1ecfi v\u00f2ng l\u1eb7p. C\u00e2u h\u1ecfi forEach JavaScript l\u00e0 g\u00ec <\/strong>kh\u00f4ng ch\u1ec9 d\u1eebng \u1edf c\u00fa ph\u00e1p, m\u00e0 c\u00f2n li\u00ean quan \u0111\u1ebfn vi\u1ec7c hi\u1ec3u r\u00f5 gi\u1edbi h\u1ea1n v\u00e0 bi\u1ebft khi n\u00e0o n\u00ean d\u00f9ng map, filter, reduce hay for…of thay th\u1ebf. Khi \u0111\u01b0\u1ee3c \u00e1p d\u1ee5ng \u0111\u00fang c\u00e1ch, forEach() g\u00f3p ph\u1ea7n \u0111\u01a1n gi\u1ea3n h\u00f3a m\u00e3 ngu\u1ed3n v\u00e0 t\u0103ng t\u00ednh r\u00f5 r\u00e0ng trong l\u1eadp tr\u00ecnh JavaScript.<\/p>\n\n\n\n

Tr\u00ed Nh\u00e2n<\/strong><\/p>\n","protected":false},"excerpt":{"rendered":"

L\u1eadp tr\u00ecnh v\u1edbi JavaScript kh\u00f4ng ch\u1ec9 l\u00e0 vi\u1ebft ra nh\u1eefng d\u00f2ng l\u1ec7nh ho\u1ea1t \u0111\u1ed9ng, m\u00e0 c\u00f2n l\u00e0 l\u1ef1a ch\u1ecdn \u0111\u00fang c\u00f4ng c\u1ee5 \u0111\u1ec3 m\u00e3 ngu\u1ed3n …<\/p>\n","protected":false},"author":58,"featured_media":9413,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[17],"tags":[],"class_list":["post-9412","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-tu-van-nghe-nghiep"],"_links":{"self":[{"href":"https:\/\/mb668s.com\/cam-nang-7mb66-xoc-dia\/wp-json\/wp\/v2\/posts\/9412","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mb668s.com\/cam-nang-7mb66-xoc-dia\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/mb668s.com\/cam-nang-7mb66-xoc-dia\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/mb668s.com\/cam-nang-7mb66-xoc-dia\/wp-json\/wp\/v2\/users\/58"}],"replies":[{"embeddable":true,"href":"https:\/\/mb668s.com\/cam-nang-7mb66-xoc-dia\/wp-json\/wp\/v2\/comments?post=9412"}],"version-history":[{"count":1,"href":"https:\/\/mb668s.com\/cam-nang-7mb66-xoc-dia\/wp-json\/wp\/v2\/posts\/9412\/revisions"}],"predecessor-version":[{"id":9414,"href":"https:\/\/mb668s.com\/cam-nang-7mb66-xoc-dia\/wp-json\/wp\/v2\/posts\/9412\/revisions\/9414"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/mb668s.com\/cam-nang-7mb66-xoc-dia\/wp-json\/wp\/v2\/media\/9413"}],"wp:attachment":[{"href":"https:\/\/mb668s.com\/cam-nang-7mb66-xoc-dia\/wp-json\/wp\/v2\/media?parent=9412"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mb668s.com\/cam-nang-7mb66-xoc-dia\/wp-json\/wp\/v2\/categories?post=9412"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mb668s.com\/cam-nang-7mb66-xoc-dia\/wp-json\/wp\/v2\/tags?post=9412"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}