Baseline Widely available
Array
ì¸ì¤í´ì¤ì forEach()
ë©ìëë ê° ë°°ì´ ììì ëí´ ì ê³µë í¨ì를 í ë²ì© ì¤íí©ëë¤.
const array1 = ["a", "b", "c"];
array1.forEach((element) => console.log(element));
// Expected output: "a"
// Expected output: "b"
// Expected output: "c"
구문
forEach(callbackFn)
forEach(callbackFn, thisArg)
매ê°ë³ì
callbackFn
ë°°ì´ì ê° ììì ëí´ ì¤íí í¨ìì ëë¤. ë°íê°ì ì¬ì©ëì§ ììµëë¤. í¨ìë ë¤ì ì¸ì를 ì¬ì©íì¬ í¸ì¶ë©ëë¤.
element
ë°°ì´ìì ì²ë¦¬ ì¤ì¸ íì¬ ìì.
index
ë°°ì´ìì ì²ë¦¬ ì¤ì¸ íì¬ ììì ì¸ë±ì¤.
array
forEach()
를 í¸ì¶í ë°°ì´.
thisArg
Optional
callbackFn
ì ì¤íí ë this
ê°ì¼ë¡ ì¬ì©í ê°ì
ëë¤. ìí ë©ìë를 참조íì¸ì.
ìì (undefined
).
forEach()
ë©ìëë ìí ë©ìëì
ëë¤. ì´ ë©ìëë ë°°ì´ì ê° ììì ëí´ ì ê³µë callbackFn
í¨ì를 ì¤ë¦ì°¨ì ì¸ë±ì¤ ììë¡ í ë²ì© í¸ì¶í©ëë¤. map()
ê³¼ ë¬ë¦¬ forEach()
ë íì undefined
를 ë°ííë¯ë¡ ì²´ì´ëí ì ììµëë¤. ì¼ë°ì ì¸ ì¬ë¡ë¡ ì²´ì¸ì ëìì ë°°ì´ì ë³ê²½íë ¤ë ìëê° ììµëë¤.
callbackFn
ì ê°ì´ í ë¹ë ë°°ì´ ì¸ë±ì¤ì ëí´ìë§ í¸ì¶ë©ëë¤. í¬ì ë°°ì´ì ë¹ ì¬ë¡¯ìë í¸ì¶ëì§ ììµëë¤.
forEach()
ë í¸ì¶ëë ë°°ì´ì ë³ê²½íì§ ìì§ë§, callbackFn
ì¼ë¡ ì ê³µëë í¨ìë ë³ê²½í ì ììµëë¤. ê·¸ë¬ë ë°°ì´ì lengthë callbackFn
ì ì²ì í¸ì¶í기 ì ì ì ì¥ëë¤ë ì ì ì ìíì¸ì. ë°ë¼ì,
callbackFn
ì forEach()
í¸ì¶ì´ ììëìì ë ë°°ì´ì ì´ê¸° length ê°ì ì´ê³¼íì¬ ì¶ê°ë ììë 방문íì§ ììµëë¤.callbackFn
ì´ í´ë¹ ì¸ë±ì¤ì ëí´ ë¤ì í¸ì¶ëì§ ììµëë¤.callbackFn
ì ìí´ ë³ê²½ëë ê²½ì°, callbackFn
ì ì ë¬ë ê°ì í´ë¹ ììê° ë°©ë¬¸ë ë¹ìì ê°ì´ ë©ëë¤. ìì ë ììë 방문ëì§ ììµëë¤.ê²½ê³ : ììì ì¤ëª í ì¢ ë¥ì ëì ìì ì ì´í´í기 ì´ë ¤ì´ ì½ë를 ë§ëë ê²½ì°ê° ë§ì¼ë¯ë¡ ì¼ë°ì ì¼ë¡ ì§ìí´ì¼ í©ëë¤(í¹ë³í ê²½ì° ì ì¸).
forEach()
ë©ìëë ë²ì©ì
ëë¤. this
ê°ìë length
ìì±ê³¼ ì ì í¤ ìì±ë§ ìì ê²ì¼ë¡ ììí©ëë¤.
ìì¸ë¥¼ ë°ììí¤ë ê² ì¸ìë forEach()
루í를 ì¤ì§íê±°ë ì¤ë¨í ì ìë ë°©ë²ì´ ììµëë¤. 루í를 ì¤ì§íë ëìì´ íìíë¤ë©´, forEach()
ë©ìëë ì ì í ëêµ¬ê° ìë ì ììµëë¤.
for
, for...of
, for...in
ê³¼ ê°ì ë°ë³µë¬¸ì ì¬ì©íì¬ ì¡°ê¸° ì¢
ë£ë¥¼ ìíí ì ììµëë¤. every()
, some()
, find()
, findIndex()
ì ê°ì ë°°ì´ ë©ìëë ì¶ê° ìíê° íìíì§ ìì ê²½ì° ì¦ì ìí를 ì¤ì§í ìììµëë¤.
forEach()
ë ë기 í¨ì를 기ëíë©° íë¡ë¯¸ì¤ë¥¼ 기ë¤ë¦¬ì§ ììµëë¤. íë¡ë¯¸ì¤(ëë ë¹ë기 í¨ì)를 forEach
ì½ë°±ì¼ë¡ ì¬ì©í ëë ê·¸ ì미를 ìê³ ìì´ì¼ í©ëë¤.
const ratings = [5, 4, 5];
let sum = 0;
const sumFunction = async (a, b) => a + b;
ratings.forEach(async (rating) => {
sum = await sumFunction(sum, rating);
});
console.log(sum);
// ìì§íê² ììí ì¶ë ¥: 14
// ì¤ì ì¶ë ¥: 0
ì¼ë ¨ì ë¹ë기 ì°ì°ì ìì°¨ì ì¼ë¡ ëë ëìì ì¤ííë ¤ë©´ íë¡ë¯¸ì¤ 구ì±ì 참조íì¸ì.
ìì í¬ì ë°°ì´ì forEach() ì¬ì©í기const arraySparse = [1, 3, /* ë¹ ì¬ë¡¯ */, 7];
let numCallbackRuns = 0;
arraySparse.forEach((element) => {
console.log({ element });
numCallbackRuns++;
});
console.log({ numCallbackRuns });
// { element: 1 }
// { element: 3 }
// { element: 7 }
// { numCallbackRuns: 3 }
ì½ë°± í¨ìë ì¸ë±ì¤ 2ì ìë ë¹ ììì ëí´ í¸ì¶ëì§ ììµëë¤.
for 루í를 forEach()ë¡ ë°ê¾¸ê¸°const items = ["item1", "item2", "item3"];
const copyItems = [];
// ì
for (let i = 0; i < items.length; i++) {
copyItems.push(items[i]);
}
// í
items.forEach((item) => {
copyItems.push(item);
});
ë°°ì´ ì½í
ì¸ ì¶ë ¥
ì°¸ê³ : ë°°ì´ì ë´ì©ì ì½ìì íìíë ¤ë©´, ë°°ì´ì í¬ë©§ë ë²ì ì ì¶ë ¥íë console.table()
ì ì¬ì©í ì ììµëë¤.
ë¤ì ìì ë forEach()
를 ì¬ì©íë ëë¤ë¥¸ ì ê·¼ ë°©ìì ë³´ì¬ì¤ëë¤.
ë¤ì ì½ëë ë°°ì´ì ê° ìì를 í ì¤ì© 기ë¡í©ëë¤.
const logArrayElements = (element, index /*, array */) => {
console.log(`a[${index}] = ${element}`);
};
// ë°°ì´ìì í´ë¹ ìì¹ì íëª©ì´ ìì¼ë¯ë¡
// ì¸ë±ì¤ 2ê° ê±´ëë°ì´ì§ ê²ì íì¸í ì ììµëë¤.
[2, 5, , 9].forEach(logArrayElements);
// ë¡ê·¸:
// a[0] = 2
// a[1] = 5
// a[3] = 9
thisArg ì¬ì©í기
ë¤ì (ì¸ìì ì¸) ìì ë ë°°ì´ì ê° í목ìì ê°ì²´ì ìì±ì ì ë°ì´í¸í©ëë¤.
class Counter {
constructor() {
this.sum = 0;
this.count = 0;
}
add(array) {
// ì¤ì§ í¨ì ííìë§ ìì ì this ë°ì¸ë©ì ê°ì§ëë¤.
array.forEach(function countEntry(entry) {
this.sum += entry;
++this.count;
}, this);
}
}
const obj = new Counter();
obj.add([2, 5, 9]);
console.log(obj.count); // 3
console.log(obj.sum); // 16
thisArg
매ê°ë³ì(this
)ë forEach()
ì ì ê³µëë¯ë¡ í¸ì¶ë ëë§ë¤ ì½ë°±ì ì ë¬ë©ëë¤. ì½ë°±ì ì´ë¥¼ this
ê°ì¼ë¡ ì¬ì©í©ëë¤.
ì°¸ê³ : ì½ë°± í¨ì를 ì ë¬í ë íì´í í¨ì ííìì ì¬ì©íë ê²½ì°, 모ë íì´í í¨ìê° ì´ ê°ì 문ë²ì ì¼ë¡(lexical) ë°ì¸ë©íë¯ë¡ this
ë§¤ê° ë³ì를 ìëµí ì ììµëë¤.
ë¤ì ì½ëë 주ì´ì§ ê°ì²´ì ë³µì¬ë³¸ì ìì±í©ëë¤.
ê°ì²´ì ë³µì¬ë³¸ì ìì±íë ë°©ë²ìë ì¬ë¬ ê°ì§ê° ììµëë¤. ë¤ìì í ê°ì§ ë°©ë²ì¼ ë¿ì´ë©° Object.*
ì í¸ë¦¬í° í¨ì를 ì¬ì©íì¬ Array.prototype.forEach()
ê° ì´ë»ê² ìëíëì§ ì¤ëª
í기 ìí´ ì ìë ê²ì
ëë¤.
const copy = (obj) => {
const copy = Object.create(Object.getPrototypeOf(obj));
const propNames = Object.getOwnPropertyNames(obj);
propNames.forEach((name) => {
const desc = Object.getOwnPropertyDescriptor(obj, name);
Object.defineProperty(copy, name, desc);
});
return copy;
};
const obj1 = { a: 1, b: 2 };
const obj2 = copy(obj1); // obj2ë ì´ì obj1ê³¼ ê°ìµëë¤.
ìí ì¤ ë°°ì´ ë³ê²½
ë¤ì ìë one
, two
, four
를 기ë¡í©ëë¤.
ê° two
ê° í¬í¨ë í목ì ëë¬íë©´, ì ì²´ ë°°ì´ì 첫 ë²ì§¸ íëª©ì´ ì´ëëì´ ëë¨¸ì§ ëª¨ë íëª©ì´ í ìì¹ ìì¼ë¡ ì´ëí©ëë¤. ì´ì ìì four
ê° ë°°ì´ì ì´ì ìì¹ì ìì¼ë¯ë¡ ìì three
ì ê±´ëë°ê² ë©ëë¤.
forEach()
ë ìíí기 ì ì ë°°ì´ì ë³µì¬ë³¸ì ë§ë¤ì§ ììµëë¤.
const words = ["one", "two", "three", "four"];
words.forEach((word) => {
console.log(word);
if (word === "two") {
words.shift(); //'one'ì ë°°ì´ìì ìì ë©ëë¤.
}
}); // one // two // four
console.log(words); // ['two', 'three', 'four']
ë°°ì´ ííí
ë¤ì ìì ë íìµ ëª©ì ì¼ë¡ë§ ì¬ì©í©ëë¤. ë´ì¥ ë©ìë를 Array.prototype.flat()
ì ì¬ì©íì¬ ë°°ì´ì íííê² ë§ë¤ ì ììµëë¤.
const flatten = (arr) => {
const result = [];
arr.forEach((item) => {
if (Array.isArray(item)) {
result.push(...flatten(item));
} else {
result.push(item);
}
});
return result;
};
// ì¬ì©ë²
const nested = [1, 2, 3, [4, 5, [6, 7], 8, 9]];
console.log(flatten(nested)); // [1, 2, 3, 4, 5, 6, 7, 8, 9]
ë°°ì´ì´ ìë ê°ì²´ì forEach() ì¬ì©í기
forEach()
ë©ìëë this
ì length
ìì±ì ì½ì ë¤ì í¤ê° length
ë³´ë¤ ìì ììê° ìë ì ìì¸ ê° ìì±ì ì ê·¼í©ëë¤.
const arrayLike = {
length: 3,
0: 2,
1: 3,
2: 4,
3: 5, // lengthê° 3ì´ë¯ë¡ forEach()ìì 무ìë©ëë¤.
};
Array.prototype.forEach.call(arrayLike, (x) => console.log(x));
// 2
// 3
// 4
ëª
ì¸ì ë¸ë¼ì°ì í¸íì± ê°ì´ 보기
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4