ํฐ์คํ ๋ฆฌ ๋ทฐ
[JS] forEach, for in, for of (์์์ Array empty ์์ ์ํ)
Carrot๐ฅ 2020. 7. 6. 06:12๊ทธ๋ฅ ๊ถ๊ธํด์ ํด๋ณธ Array empty ์์ ์ํ ๊ธฐ๋ก
0. ๋น ์์๊ฐ ์๋ Array ์์ฑ
var arr = [ 1, 2, 3 ];
arr[10] = "last";
console.log(arr);
1. for
for( let i=0; i<arr.length; i++ ){
console.log(`arr[${i}] : ${arr[i]}`);
}
2. forEach : Array.prototype.forEach()
forEach๋ Array์ ํ๋กํ ํ์
๋ฉ์๋์ด๋ค. (์๋ ๋ฐ๋ณต๋ฌธ์ด ์๋๋ผ ํจ์์)
์ธ์๋ก ๋ฐ์ ์ฝ๋ฐฑํจ์๋ฅผ ๋ฐฐ์ด์ ๊ฐ ์์์ ์ ์ฉํ๋ค.
arr.forEach(callback(currentvalue[, index[, array]])[, thisArg])
์ฝ๋ฐฑํจ์ ํ๋ผ๋ฏธํฐ ์์ ์ค์!
arr.forEach( (v, i) =>
console.log(`arr[${i}] : ${v}`);
);
empty ์์๋ ์ํํ์ง ์์
3. for of : for...of ๋ช ๋ น๋ฌธ
for ... of ๋ช ๋ น๋ฌธ์ ๋ฐ๋ณต๊ฐ๋ฅํ ๊ฐ์ฒด (Array, Map, Set, String, TypedArray, arguments ๊ฐ์ฒด ๋ฑ์ ํฌํจ)์ ๋ํด์ ๋ฐ๋ณตํ๊ณ ๊ฐ ๊ฐ๋ณ ์์ฑ๊ฐ์ ๋ํด ์คํ๋๋ ๋ฌธ์ด ์๋ ์ฌ์ฉ์ ์ ์ ๋ฐ๋ณต ํํฌ๋ฅผ ํธ์ถํ๋ ๋ฃจํ๋ฅผ ์์ฑํฉ๋๋ค.
๋ชจ๋ ๊ฐ์ฒด๋ณด๋ค๋, [Symbol.iterator]
์์ฑ์ด ์๋ ๋ชจ๋ ์ปฌ๋ ์
์์์ ๋ํด ์ด ๋ฐฉ์์ผ๋ก ๋ฐ๋ณตํฉ๋๋ค.
forEach() ๊ตฌ๋ฌธ๊ณผ ๋ฌ๋ฆฌ, break, continue, ๊ทธ๋ฆฌ๊ณ return ๊ตฌ๋ฌธ๊ณผ ํจ๊ป ์ฌ์ฉํ ์ ์์ต๋๋ค.
for ( let v of arr ) {
console.log(v)
}
empty ์์๋ ์ํํจ
4. for in : for...in
! for ... in ๋ฌธ์ ๊ฒฝ์ฐ Array์์๋ ์ฌ์ฉํ์ง ์๋ ๊ฒ์ด ์ข๋ค.
๊ทธ ์ด์ ์ธ ์ฆ์จ,
์ฒซ์งธ๋ก index ์์๊ฐ ๋ณด์ฅ๋์ง ์์ผ๋ฉฐ,
๋์งธ๋ก arr.owner = "Carrot"
์ด๋ฐ์์ผ๋ก ํ์ฅ ํ๋กํผํฐ๋ฅผ ์ถ๊ฐํ๋ค๋ฉด ์๋ ์ํํ๋ค.
๊ฑฐ๊ธฐ๋ค๊ฐ prototype ์ฒด์ธ์ ํตํด์ ๋ฌผ๋ ค๋ฐ์ ํ๋กํผํฐ๋ผ๋, enumerable ๊ฐ true ๋ผ๋ฉด ์ฃ๋ค ์ํํ๋ค.
๊ทธ๋ฆฌ๊ณ ์๊ฐ ์ํํ๋ ๊ฑด value ๊ฐ ์๋๋ผ key ๊ฐ!
Object์์๋ ์๋ณด๋จ Object.Keys()
๋ฅผ ์ด์ฉํ๋๊ฒ ๋ซ๋ค๋๋ฐ ์ด๊ฑด ๋์ค์ ์๊ฐ๋๋ฉด ํฌ์คํ
ํ ์ง๋..
for ( let key in arr ) {
console.log(`arr[${key}] : ${arr[key]}`);
}
empty ์์๋ ์ํํ์ง ์์์ง๋ง ํ์ฅ ์์๋ ์ถ๋ ฅ์ฐ..
++ object ์์์ for in ๋ฌธ ์ํ : value๋ฅผ ์ํํ๋ ค๋ฉด obj[key] ํํ๋ก ์ํํด์ผํจ
๋ง์น๋ฉฐ
forEach / for of / for in ์ ์ฐจ์ด์ ์ ์ค์ ์ผ๋ก ์ฐ๋ ค๊ณ ํ๋๊ฒ ์๋์ง๋ง
์ฐ๋ค๋ณด๋ ๊ทธ๋ ๊ฒ ๋์๋ค. (์ฝ-์ฑ)
์จ๋ ๋ฐฐ์ด์ empty ์์๋ฅผ ์ํํ๋ ค๋ฉด for, for of ๋ฌธ์ ์ฌ์ฉํ๋๊ฑธ๋ก ํ์.
์ฝ์๊ฑฐ๋ฆฌ : https://thecodebarbarian.com/for-vs-for-each-vs-for-in-vs-for-of-in-javascript
http://hacks.mozilla.or.kr/2015/08/es6-in-depth-iterators-and-the-for-of-loop/
'๊ณต๋ถ > JS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[JS] delete ์ฐ์ฐ์ (0) | 2020.07.06 |
---|---|
[JS] ์์ฑ์ํจ์์ return ๊ฐ (0) | 2020.07.06 |
[JS] String.slice() ์ String.substring() ๋น๊ต (0) | 2020.07.02 |
[ESLint & Prettier] expected indentation of 2 spaces but found 4. (5) | 2020.06.27 |
[์คํฌ๋ฉ] 5 Tips to Write Better Conditionals in JavaScript (0) | 2020.06.27 |
- HTML
- KEYBOARD
- DOM
- array
- ์์ฑ์ํจ์
- ๋ฐ๋๋ผ์ฝ๋ฉ
- GIT
- string
- js
- eslint
- eventlistener
- review
- book
- ๋ฐ๋๋ผ์ฝ๋ฉ ํ๊ธฐ
- ๋ถํธ์บ ํ
- css
- Stash
- stackoverflow
- VSC
- ์ฝ๋ฉ๋ถํธ์บ ํ
- Total
- Today
- Yesterday