TIL 8 | array methods ์ •๋ฆฌ, forIn/forOf, var/let/const

dabin *.โ—Ÿ(หŠแ—จห‹)โ—ž.*ยท2021๋…„ 8์›” 6์ผ
0

Javascript

๋ชฉ๋ก ๋ณด๊ธฐ
8/25
post-thumbnail

๐ŸŸฉ Array Methods

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋ฐฐ์—ด์€ ๋‹ค์ค‘ ์š”์†Œ๋ฅผ ์ €์žฅํ•˜๋Š” ๋‹จ์ผ ๋ณ€์ˆ˜์ด๋‹ค.

.map()

๋ฐฐ์—ด ๋‚ด ๋ชจ๋“  ์š”์†Œ ๊ฐ๊ฐ์— ๋Œ€ํ•˜์—ฌ ์ฃผ์–ด์ง„ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•œ ๊ฒฐ๊ณผ๋ฅผ ๋ชจ์•„ ์ƒˆ๋กœ์šด ๋ฐฐ์—ด ๋ฐ˜ํ™˜

let arr = [1, 2, 3, 4, 5];
let arr2 = arry.map(x => x * x);
console.log(arr2);//[1, 4, 9, 16, 25]

.filter()

์ฃผ์–ด์ง„ ํ•จ์ˆ˜์˜ ํ…Œ์ŠคํŠธ๋ฅผ ํ†ต๊ณผํ•˜๋Š” ๋ชจ๋“  ์š”์†Œ๋ฅผ ๋ชจ์•„ ์ƒˆ๋กœ์šด ๋ฐฐ์—ด๋กœ ๋ฐ˜ํ™˜

let arr = [1, 2, 3, 4, 5];
let result = arr.filter(x => x > 2);
console.log(result);//[3, 4, 5]

.sort()

๋ฐฐ์—ด์˜ ์š”์†Œ๋ฅผ ์ ์ ˆํ•œ ์œ„์น˜์— ์ •๋ ฌํ•œ ํ›„ ๊ทธ ๋ฐฐ์—ด์„ ๋ฐ˜ํ™˜, ๊ธฐ๋ณธ ์ •๋ ฌ ์ˆœ์„œ๋Š” ๋ฌธ์ž์—ด์˜ ์œ ๋‹ˆ์ฝ”๋“œ ์ฝ”๋“œ ํฌ์ธํŠธ๋ฅผ ๋”ฐ๋ฆ„.

let customers = ['dabin', 'joy', 'jocob', 'helena'];
customers.sort();
console.log(customers);//["dabin", "helena", "jocob", "joy"]

let arr = [1, 324, 34541, 58, 11];
arr.sort();
console.log(arr);//[1, 11, 324, 34541, 58]

.forEach()

๋ฐฐ์—ด์˜ ํ•ญ๋ชฉ๋“ค์„ ์ˆœํ™˜ํ•˜๋ฉฐ ์ฒ˜๋ฆฌํ•˜๊ธฐ

let arr = [1, 2, 3, 4, 5];
arr.forEach(function (item, index, array) {
	console.log(item, index);
});
/*
1 0
2 1
3 2
4 3
5 4
*/

.concat()

์ธ์ž๋กœ ์ฃผ์–ด์ง„ ๋ฐฐ์—ด์ด๋‚˜ ๊ฐ’๋“ค์„ ๊ธฐ์กด ๋ฐฐ์—ด์— ํ•ฉ์ณ ์ƒˆ ๋ฐฐ์—ด ๋ฐ˜ํ™˜. ๊ธฐ์กด ๋ฐฐ์—ด ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๊ณ , ์ถ”๊ฐ€๋œ ์ƒˆ๋กœ์šด ๋ฐฐ์—ด ๋ฐ˜ํ™˜.

let arr1 = [1, 2, 3];
let arr2 = [4, 5, 6];
let arr3 = arr1.concat(arr2);
console.log(arr3);//[1, 2, 3, 4, 5, 6]

.every()

๋ฐฐ์—ด ์•ˆ์˜ ๋ชจ๋“  ์š”์†Œ๊ฐ€ ์ฃผ์–ด์ง„ ํŒ๋ณ„ ํ•จ์ˆ˜๋ฅผ ํ†ต๊ณผํ•˜๋Š”์ง€ ํ…Œ์ŠคํŠธ. boolean ๊ฐ’์„ ๋ฐ˜ํ™˜.

let isBelowTwo = (currentValue) => currentValue > 2; 
let arr = [1, 2, 3, 4, 5, 6];
console.log(arr.every(isBelowTwo));
//false

.some()

๋ฐฐ์—ด ์•ˆ์˜ ์–ด๋–ค ์š”์†Œ๋ผ๋„ ์ฃผ์–ด์ง„ ํŒ๋ณ„ ํ•จ์ˆ˜๋ฅผ ํ†ต๊ณผํ•˜๋Š”์ง€ ํ…Œ์ŠคํŠธ. ๋นˆ ๋ฐฐ์—ด์—์„œ ํ˜ธ์ถœํ•˜๋ฉด ๋ฌด์กฐ๊ฑด false ๋ฐ˜ํ™˜.

let isBelowTwo = (currentValue) => currentValue > 2; 
let arr = [1, 2, 3, 4, 5, 6];
console.log(arr.some(isBelowTwo));
//true

.includes()

๋ฐฐ์—ด์ด ํŠน์ • ์š”์†Œ๋ฅผ ํฌํ•จํ•˜๊ณ  ์žˆ๋Š”์ง€ ํŒ๋ณ„

let arr = [1, 2, 3, 4, 5, 6];
console.log(arr.includes(4));//true
console.log(arr.includes(7));//false

.join()

๋ฐฐ์—ด์˜ ๋ชจ๋“  ์š”์†Œ๋ฅผ ์—ฐ๊ฒฐํ•ด ํ•˜๋‚˜์˜ ๋ฌธ์ž์—ด๋กœ ๋งŒ๋“ ๋‹ค.

let arr = [1, 2, 3];
console.log(arr.join());//"1,2,3"
console.log(arr.join(''));//"123"
console.log(arr.join('-'));"1-2-3"

.reduce()

๋ฐฐ์—ด์˜ ๊ฐ ์š”์†Œ์— ์ฃผ์–ด์ง„ ๋ฆฌ๋“€์„œ ํ•จ์ˆ˜๋ฅผ ์‹คํ–‰ํ•˜๊ณ , ํ•˜๋‚˜์˜ ๊ฒฐ๊ณผ๊ฐ’์„ ๋ฐ˜ํ™˜

//๊ตฌ๋ฌธ : arr.reduce(callback[, initialvalue])
let arr = [1, 2, 3];

let reducer = (accumulator, currentValue) => accumulator * currentValue;
console.log(arr.reduce(reducer)); //6

let reducer2 = (accumulator, currentValue) => accumulator + currentValue;
console.log(arr.reduce(reducer2)); //6
//accumulator(๋ˆ„์‚ฐ๊ธฐ)๋Š” ์ฝœ๋ฐฑ์˜ ๋ฐ˜ํ™˜๊ฐ’์„ ๋ˆ„์ 

.find()

์ฃผ์–ด์ง„ ํŒ๋ณ„ ํ•จ์ˆ˜๋ฅผ ๋งŒ์กฑํ•˜๋Š” ์ฒซ ๋ฒˆ์งธ ์š”์†Œ์˜ ๊ฐ’์„ ๋ฐ˜ํ™˜. ์—†์œผ๋ฉด undefined ๋ฐ˜ํ™˜.

let arr = [1, 2, 3, 4, 5];
let isLargeNumber = (x) => x > 4;
console.log(arr.find(isLargeNumber)); //5
            
let isLargerNumber = (x) => x > 7;
console.log(arr.find(isLargerNumber)); //undefined

.findIndex()

์ฃผ์–ด์ง„ ํŒ๋ณ„ ํ•จ์ˆ˜๋ฅผ ๋งŒ์กฑํ•˜๋Š” ๋ฐฐ์—ด์˜ ์ฒซ ๋ฒˆ์งธ ์š”์†Œ์— ๋Œ€ํ•œ ์ธ๋ฑ์Šค๋ฅผ ๋ฐ˜ํ™˜. ๋งŒ์กฑํ•˜๋Š” ์š”์†Œ ์—†์œผ๋ฉด -1 ๋ฐ˜ํ™˜.

let arr = [1, 2, 3, 4, 5];
let isLargeNumber = (x) => x > 4;
console.log(arr.findIndex(isLargeNumber)); //4
            
let isLargerNumber = (x) => x > 7;
console.log(arr.findIndex(isLargerNumber)); //-1

.indexOf()

๋ฐฐ์—ด ์•ˆ ํ•ญ๋ชฉ์˜ ์ธ๋ฑ์Šค ์ฐพ๊ธฐ

let arr = [1, 2, 3, 4, 5];
let a = arr.indexOf(2)
console.log(a); // 1

.fill()

๋ฐฐ์—ด์˜ ์‹œ์ž‘ ์ธ๋ฑ์Šค๋ถ€ํ„ฐ ๋ ์ต๋ฑ์Šค์˜ ์ด์ „๊นŒ์ง€ ์ •์ ์ธ ๊ฐ’ ํ•˜๋‚˜๋กœ ์ฑ„์šด๋‹ค.

//arr.fill(value[, start[, end]])
//value ํ•„์ˆ˜, start๋Š” ์‹œ์ž‘์ธ๋ฑ์Šค/end๋Š” ๋์ธ๋ฑ์Šค
let arr = [1, 2, 3, 4, 5];
console.log(arr.fill(0, 1, 4));//[1, 0, 0, 0, 5]
console.log(arr.fill(4));//[4, 4, 4, 4, 4]
console.log(arr.fill(3, 1));//[4, 3, 3, 3, 3]

.slice()

๋ฐฐ์—ด ๋ณต์‚ฌํ•˜๊ธฐ

let arr = [1, 2, 3, 4, 5];
let arr2 = arr.slice();
console.log(arr2); //[1, 2, 3, 4, 5]

.reverse()

๋ฐฐ์—ด์˜ ์ˆœ์„œ๋ฅผ ๋ฐ˜์ „ํ•œ๋‹ค.

let arr = [1, 2, 3, 4, 5];
arr.reverse();
console.log(arr); //[5, 4, 3, 2, 1]

.push()

๋ฐฐ์—ด ๋์— ํ•ญ๋ชฉ ์ถ”๊ฐ€ํ•˜๊ธฐ

let arr = [1, 2, 3, 4, 5];
arr.push(6);
console.log(arr); // [1, 2, 3, 4, 5, 6]

.pop()

๋ฐฐ์—ด ๋์—์„œ๋ถ€ํ„ฐ ํ•ญ๋ชฉ ์ œ๊ฑฐํ•˜๊ธฐ

let arr = [1, 2, 3, 4, 5];
arr.pop();
console.log(arr); // [1, 2, 3, 4]

.shift()

๋ฐฐ์—ด ์•ž์—์„œ๋ถ€ํ„ฐ ํ•ญ๋ชฉ ์ œ๊ฑฐํ•˜๊ธฐ

let arr = [1, 2, 3, 4, 5];
arr.shift();
console.log(arr); //[2, 3, 4, 5]

.unshift()

๋ฐฐ์—ด ์•ž์— ํ•ญ๋ชฉ ์ถ”๊ฐ€ํ•˜๊ธฐ

let arr = [1, 2, 3, 4, 5];
arr.unshift(0);
console.log(arr); // [0, 1, 2, 3, 4, 5]

https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array

๐ŸŸฆ For in / for of

Iteration์ด๋ž€?

์‚ฌ์ „์ ์œผ๋กœ ๋˜ํ’€์ด๋ฅผ ์˜๋ฏธํ•˜๋ฉฐ, while๋ฌธ์ด๋‚˜ for๋ฌธ๊ณผ ๊ฐ™์€ ๋ฌธ๋ฒ•์ด๋‹ค. Iteration์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด Iterable๊ณผ Iterator ๋‘ ํ”„๋กœํ† ์ฝœ์ด ๋ชจ๋‘ ์กด์žฌํ•ด์•ผํ•œ๋‹ค

  • Iterable : ๋ฐ˜๋ณต๋  ์ˆ˜ ์žˆ๋Š” ์กฐ๊ฑด์„ ๋œปํ•œ๋‹ค. ์กฐ๊ฑด์€ ๊ฐ์ฒด์— Symbol.iterator์ด ์กด์žฌํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ์ฐธ๊ณ ๋กœ, Symbol.iterator์ด ์—†์–ด๋„ prototype chain์— ์˜ํ•ด ๋ถ€๋ชจ์— ์กด์žฌํ•˜๋ฉด ๊ทธ ๊ฐ์ฒด๋Š” Iterable.
  • Iterator : Iterableํ•œ ๊ฐ์ฒด๊ฐ€ ์ˆœ์„œ๋Œ€๋กœ ์—ด๊ฒจ๋  ์ˆ˜ ์žˆ๋Š”์ง€๋ฅผ ์˜๋ฏธ

for in๊ณผ for of๋Š” ๋ฐ˜๋ณต์ด ๊ฐ€๋Šฅํ•œ ๊ฐ์ฒด์˜ ๋ชจ๋“  ์›์†Œ๋ฅผ ํ•˜๋‚˜์”ฉ ์ถ”์ถœํ•ด ๋ณ€์ˆ˜์— ๋‹ด์•„ ๋ฐ˜๋ณต๋ฌธ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฌธ๋ฒ•์ด๋‹ค.

//for in
for(let value in arr) {
  console.log(value)
}
//for of
for(let value of arr) {
  console.log(value)
}

for in/for of์˜ ์ฐจ์ด์ 

์ด ๋‘˜์€ ๋ฐ˜๋ณตํ•˜๋Š” ๋Œ€์ƒ๊ณผ ๋ณ€์ˆ˜์— ์ฐจ์ด๊ฐ€ ์žˆ๋‹ค.
for in
1. Iterable object ๋ชจ๋‘๊ฐ€ ๋ฐ˜๋ณต๋Œ€์ƒ
2. value์—๋Š” index๊ฐ€ ๋‹ฌ๋ ค์žˆ์Œ
for of
1. Iterable object ์ด์ง€๋งŒ, prototype chain์— ์˜ํ•ด ๋ถ€๋ชจ์— ์กด์žฌํ•˜๋Š” Iterable ์ œ์™ธํ•˜๊ณ  ๋ฐ˜๋ณต๋Œ€์ƒ
2. value์—๋Š” ์‹ค์ œ ์›์†Œ์˜ ๊ฐ’๋งŒ ์ˆœ์„œ๋Œ€๋กœ ๋‹ด๊น€

https://victorydntmd.tistory.com/89

๐ŸŸช var/let/const

  • var : ๋ณ€์ˆ˜ ์žฌ์„ ์–ธ ๊ฐ€๋Šฅ
  • let : ๋ณ€์ˆ˜ ์žฌ์„ ์–ธ ๋ถˆ๊ฐ€๋Šฅ, ๋ณ€์ˆ˜ ์žฌํ• ๋‹น ๊ฐ€๋Šฅ
  • const : ๋ณ€์ˆ˜ ์žฌ์„ ์–ธ ๋ถˆ๊ฐ€๋Šฅ, ๋ณ€์ˆ˜ ์žฌํ• ๋‹น ๋ถˆ๊ฐ€๋Šฅ

var (function-scoped)

ํŽธ๋ฆฌํ•˜์ง€๋งŒ, ๊ฐ™์€ ๋ณ€์ˆ˜๋ช…์„ ์‚ฌ์šฉํ• ์‹œ ๋ฌธ์ œ๋ฅผ ์•ผ๊ธฐํ•˜๊ธฐ ์‰ฝ๋‹ค. ์ด๋ฅผ ๋ณด์™„ํ•˜๊ธฐ ์œ„ํ•ด ES6๋ถ€ํ„ฐ let๊ณผ const๊ฐ€ ์ถ”๊ฐ€๋˜์—ˆ๋‹ค.

var a = 'today';
console.log(a) //"today"

var a = 'yesterday';//๋ณ€์ˆ˜ ์žฌ์„ ์–ธ
console.log(a) //"yesterday"

let (block-scoped)

let b = 'a'
console.log(b) //"a"

b = 'b'//๋ณ€์ˆ˜ ์žฌํ• ๋‹น
console.log(b)//"b"

let b = 'c'
console.log(b) //error, ๋ณ€์ˆ˜ ์žฌ์„ ์–ธ ๋ถˆ๊ฐ€๋Šฅ

const (block-scoped)

const c = 'c'
console.log(c) //"c"

const c = 'b'
console.log(c) //error, ๋ณ€์ˆ˜ ์žฌ์„ ์–ธ ๋ถˆ๊ฐ€๋Šฅ

c = 'b'
console.log(c) //error, ๋ณ€์ˆ˜ ์žฌํ• ๋‹น ๋ถˆ๊ฐ€๋Šฅ

https://gist.github.com/LeoHeo/7c2a2a6dbcf80becaaa1e61e90091e5d

profile
๋ชจ๋ฅด๋Š”๊ฒƒํˆฌ์„ฑ์ด

0๊ฐœ์˜ ๋Œ“๊ธ€