๐Ÿ’จ ํŒจ์ŠคํŠธ์บ ํผ์Šค/๊ณต๋ถ€ ๊ธฐ๋ก

[221031] JS : ํ‘œ์ค€๋‚ด์žฅ๊ฐ์ฒด 2

Jane K 2022. 11. 17. 01:27

 

 

1. ๋ฐฐ์—ด

  • length : ๋ฐฐ์—ด์˜ ๊ธธ์ด(์ˆซ์ž)๋ฅผ ๋ฐ˜ํ™˜
  • at : ๋Œ€์ƒ ๋ฐฐ์—ด์„ ์ธ๋ฑ์‹ฑ. ์Œ์ˆ˜ ๊ฐ’์„ ์‚ฌ์šฉํ•˜๋ฉด ๋’ค์—์„œ๋ถ€ํ„ฐ ์ธ๋ฑ์‹ฑ ๋งˆ์ง€๋ง‰ ์•„์ดํ…œ์„ ์กฐํšŒํ•  ๋•Œ๋Š” arr[arr.length-1] ์„ ์“ฐ๋Š”๋ฐ at ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด arr.at(-1) ๋กœ ๊ฐ„๋‹จํ•˜๊ฒŒ ์‚ฌ์šฉ ๊ฐ€๋Šฅ
  • concat : ๋Œ€์ƒ ๋ฐฐ์—ด๊ณผ ์ฃผ์–ด์ง„ ๋ฐฐ์—ด์„ ๋ณ‘ํ•ฉํ•ด ์ƒˆ๋กœ์šด ๋ฐฐ์—ด์„ ๋ฐ˜ํ™˜. ๋‘๊ฐœ์˜ ๋ฐฐ์—ด ๋ฐ์ดํ„ฐ๋ฅผ ๋ณ‘ํ•ฉํ•˜๋Š” ์šฉ๋„. arr1.concat(arr2) ์ „๊ฐœ ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•ด๋„ ๋˜‘๊ฐ™์Œ → […arr1, …arr2]
  • every : ๋Œ€์ƒ ๋ฐฐ์—ด์˜ ๋ชจ๋“  ์š”์†Œ๊ฐ€ ์ฝœ๋ฐฑ ํ…Œ์ŠคํŠธ๋ฅผ ํ†ต๊ณผ(์ฐธ์„ ๋ฐ˜ํ™˜)ํ•˜๋Š”์ง€ ํ™•์ธ. arr.every(item => item < 5) → ๋ฐฐ์—ด์˜ ๋ชจ๋“  ์•„์ดํ…œ๋“ค์ด ํ•ด๋‹นํ•˜๋Š” ์ฝœ๋ฐฑ ํ•จ์ˆ˜๋ฅผ ํ†ต๊ณผํ•˜๋Š”์ง€ ํ™•์ธ, ํ†ต๊ณผํ•˜์ง€ ๋ชปํ•˜๋ฉด false ๋ฐ˜ํ™˜
  • filter : ๋Œ€์ƒ ๋ฐฐ์—ด์—์„œ ์ฝœ๋ฐฑ ํ…Œ์ŠคํŠธ๋ฅผ ํ†ต๊ณผํ•˜๋Š” ๋ชจ๋“  ์š”์†Œ๋กœ ์ƒˆ๋กœ์šด ๋ฐฐ์—ด์„ ๋งŒ๋“ค์–ด ๋ฐ˜ํ™˜. ๋งŒ์•ฝ ๋ชจ๋“  ์š”์†Œ๊ฐ€ ํ…Œ์ŠคํŠธ๋ฅผ ํ†ต๊ณผํ•˜์ง€ ๋ชปํ•˜๋ฉด ๋นˆ ๋ฐฐ์—ด์„ ๋ฐ˜ํ™˜.
const users = [
    { name: "Neo", age: 85 },
    { name: "Amy", age: 22 },
    { name: "Lewis", age: 11 },
  ];

const adults = users.filter((user) => user.age >= 19);
console.log(adults); // [ Neo๊ฐ์ฒด, Amy๊ฐ์ฒด ]

 

  • find : ๋Œ€์ƒ ๋ฐฐ์—ด์—์„œ ์ฝœ๋ฐฑ ํ…Œ์ŠคํŠธ๋ฅผ ํ†ต๊ณผํ•˜๋Š” ์ฒซ ๋ฒˆ์งธ ์š”์†Œ๋ฅผ ๋ฐ˜ํ™˜. ์ตœ์ดˆ๋กœ ํ…Œ์ŠคํŠธ๊ฐ€ ํ†ต๊ณผํ•˜๋ฉด, ์ดํ›„ ์ฝœ๋ฐฑ์€ ์‹คํ–‰ ์•ˆ๋จ. ๋ชจ๋“  ํ…Œ์ŠคํŠธ๊ฐ€ ์‹คํŒจํ•˜๋ฉด, undefined๋ฅผ ๋ฐ˜ํ™˜.
  • findIndex : ๋Œ€์ƒ ๋ฐฐ์—ด์—์„œ ์ฝœ๋ฐฑ ํ…Œ์ŠคํŠธ๋ฅผ ํ†ต๊ณผํ•˜๋Š” ์ฒซ ๋ฒˆ์งธ ์š”์†Œ์˜ ์ธ๋ฑ์Šค๋ฅผ ๋ฐ˜ํ™˜. ์ตœ์ดˆ๋กœ ํ…Œ์ŠคํŠธ๊ฐ€ ํ†ต๊ณผํ•˜๋ฉด, ์ดํ›„ ์ฝœ๋ฐฑ์€ ์‹คํ–‰ ์•ˆ๋จ. ๋ชจ๋“  ํ…Œ์ŠคํŠธ๊ฐ€ ์‹คํŒจํ•˜๋ฉด, -1์„ ๋ฐ˜ํ™˜.
  • flat : ๋Œ€์ƒ ๋ฐฐ์—ด์˜ ๋ชจ๋“  ํ•˜์œ„ ๋ฐฐ์—ด์„ ์ง€์ •ํ•œ ๊นŠ์ด(Depth)๊นŒ์ง€ ์ด์–ด๋ถ™์ธ ์ƒˆ๋กœ์šด ๋ฐฐ์—ด์„ ๋ฐ˜ํ™˜. ๊นŠ์ด์˜ ๊ธฐ๋ณธ๊ฐ’์€ 1.
const arr = [1, 2, [3, 4, [5, 6, [7, 8]]]];

console.log(arr.flat()); // [1, 2, 3, 4, [5, 6, [7, 8]]]
console.log(arr.flat(2)); // [1, 2, 3, 4, 5, 6, [7, 8]]
console.log(arr.flat(Infinity)); // [1, 2, 3, 4, 5, 6, 7, 8]

 

  • forEach : ๋Œ€์ƒ ๋ฐฐ์—ด์˜ ๊ธธ์ด๋งŒํผ ์ฃผ์–ด์ง„ ์ฝœ๋ฐฑ์„ ์‹คํ–‰. for ๋ฐ˜๋ณต๋ฌธ๊ณผ ๋™์ผํ•˜์ง€๋งŒ foreach ๊ฐ€ ๋” ๊น”๋”. ํ•˜์ง€๋งŒ forEach๋Š” ์ค‘๊ฐ„์— ๋ฐ˜๋ณต์„ ๋ฉˆ์ถœ ์ˆ˜ ์—†์Œ.๋ฐ˜๋ณต์„ ๋ฉˆ์ถœ ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค๋ฉด, for ๋ฐ˜๋ณต๋ฌธ์„ ์‚ฌ์šฉ.
  • includes : ๋Œ€์ƒ ๋ฐฐ์—ด์ด ํŠน์ • ์š”์†Œ๋ฅผ ํฌํ•จํ•˜๊ณ  ์žˆ๋Š”์ง€ ํ™•์ธ. ์›์‹œํ˜• ๋ฐ์ดํ„ฐ๋ฅผ ์ฐพ๋Š” ์šฉ๋„๋กœ ์‚ฌ์šฉํ•จ. ์ฐธ์กฐํ˜• ๋ฐ์ดํ„ฐ๋Š” ๋ณต์‚ฌ๋ฅผ ํ•ด์„œ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ find ๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉ.
const users = [
  { name: 'Neo', age: 85 },
  { name: 'Amy', age: 22 },
  { name: 'Lewis', age: 11 }
]

console.log(users.includes({ name: 'Neo', age: 85 })) // false

const neo = users[0]
console.log(users.includes(neo)) // true

 

  • join : ๋Œ€์ƒ ๋ฐฐ์—ด์˜ ๋ชจ๋“  ์š”์†Œ๋ฅผ ๊ตฌ๋ถ„์ž๋กœ ์—ฐ๊ฒฐํ•œ ๋ฌธ์ž๋ฅผ ๋ฐ˜ํ™˜.
  • map : ๋Œ€์ƒ ๋ฐฐ์—ด์˜ ๊ธธ์ด๋งŒํผ ์ฃผ์–ด์ง„ ์ฝœ๋ฐฑ์„ ์‹คํ–‰ํ•˜๊ณ , ์ฝœ๋ฐฑ์˜ ๋ฐ˜ํ™˜ ๊ฐ’์„ ๋ชจ์•„ ์ƒˆ๋กœ์šด ๋ฐฐ์—ด์„ ๋ฐ˜ํ™˜.
const users = [
  { name: 'Neo', age: 85 },
  { name: 'Amy', age: 22 },
  { name: 'Lewis', age: 11 }
]

const newUsers = users.map(user => ({
  ...user,
  isValid: true,
  email: null
}))

console.log(newUsers)

 

  • pop : ๋Œ€์ƒ ๋ฐฐ์—ด์—์„œ ๋งˆ์ง€๋ง‰ ์š”์†Œ๋ฅผ ์ œ๊ฑฐํ•˜๊ณ  ๊ทธ ์š”์†Œ๋ฅผ ๋ฐ˜ํ™˜. ๋Œ€์ƒ ๋ฐฐ์—ด ์›๋ณธ์ด ๋ณ€๊ฒฝ.
  • shift : ๋Œ€์ƒ ๋ฐฐ์—ด์—์„œ ์ฒซ ๋ฒˆ์งธ ์š”์†Œ๋ฅผ ์ œ๊ฑฐํ•˜๊ณ , ์ œ๊ฑฐ๋œ ์š”์†Œ๋ฅผ ๋ฐ˜ํ™˜. ๋Œ€์ƒ ๋ฐฐ์—ด ์›๋ณธ์ด ๋ณ€๊ฒฝ.
  • push : ๋Œ€์ƒ ๋ฐฐ์—ด์˜ ๋งˆ์ง€๋ง‰์— ํ•˜๋‚˜ ์ด์ƒ์˜ ์š”์†Œ๋ฅผ ์ถ”๊ฐ€, ๋ฐฐ์—ด์˜ ์ƒˆ๋กœ์šด ๊ธธ์ด๋ฅผ ๋ฐ˜ํ™˜. ๋Œ€์ƒ ๋ฐฐ์—ด ์›๋ณธ์ด ๋ณ€๊ฒฝ.
const fruits = ['Apple', 'Banana', 'Cherry']
const newLength = fruits.push('Orange')

console.log(newLength) // 4
console.log(fruits) // ['Apple', 'Banana', 'Cherry', 'Orange']

 

  • unshift : ์ƒˆ๋กœ์šด ์š”์†Œ๋ฅผ ๋Œ€์ƒ ๋ฐฐ์—ด์˜ ๋งจ ์•ž์— ์ถ”๊ฐ€ํ•˜๊ณ  ์ƒˆ๋กœ์šด ๋ฐฐ์—ด์˜ ๊ธธ์ด๋ฅผ ๋ฐ˜ํ™˜. ๋Œ€์ƒ ๋ฐฐ์—ด ์›๋ณธ์ด ๋ณ€๊ฒฝ.
  • reduce : ๋Œ€์ƒ ๋ฐฐ์—ด์˜ ๊ธธ์ด๋งŒํผ ์ฃผ์–ด์ง„ ์ฝœ๋ฐฑ์„ ์‹คํ–‰, ๋งˆ์ง€๋ง‰์— ํ˜ธ์ถœ๋˜๋Š” ์ฝœ๋ฐฑ์˜ ๋ฐ˜ํ™˜ ๊ฐ’์„ ๋ฐ˜ํ™˜. ๊ฐ ์ฝœ๋ฐฑ์˜ ๋ฐ˜ํ™˜ ๊ฐ’์€ ๋‹ค์Œ ์ฝœ๋ฐฑ์œผ๋กœ ์ „๋‹ฌ. ๋ฐ˜ํ™˜๊ฐ’์ด accumulator ๋กœ ์ „๋‹ฌ๋œ๋‹ค๋Š” ๋ง. ์•„์ดํ…œ์˜ ๊ฐœ์ˆ˜๋งŒํผ ์‹คํ–‰.
const numbers = [1, 2, 3]
// const result = numbers.reduce((acc, cur) => acc + cur, 0)
const result = numbers.reduce((accumulator, currentValue) => {
  return accumulator + currentValue
}, 0)

console.log(result) // 6

→ ๋ˆ„์ ๊ฐ’ + ๋ฐ˜๋ณต๊ฐ’ => 0+1 ~> 1+2 ~> 2+3 ~> 3+3 = 6

 

 

// ๋ชจ๋“  ์ด๋ฆ„ ์ถ”์ถœ

const names = users
  .reduce((acc, cur) => {
    acc.push(cur.name)
    return acc
  }, [])
  .join(', ')
console.log(names) // 'Neo, Amy, Lewis'

์ดˆ๊ธฐ๊ฐ’์ด ๋ฐฐ์—ด๋กœ ๋˜์–ด์žˆ๋Š” ๋ˆ„์ ๊ฐ’์— name ์ด๋ผ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋„ฃ์–ด์„œ ๋ˆ„์ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜๊ณ  ๋ฌธ์ž์—ด๋กœ ๋งŒ๋“ค์–ด์คŒ

 

  • reverse : ๋Œ€์ƒ ๋ฐฐ์—ด์˜ ์ˆœ์„œ๋ฅผ ๋ฐ˜์ „. ๋Œ€์ƒ ๋ฐฐ์—ด ์›๋ณธ์ด ๋ณ€๊ฒฝ.
  • slice : ๋Œ€์ƒ ๋ฐฐ์—ด์˜ ์ผ๋ถ€๋ฅผ ์ถ”์ถœํ•ด ์ƒˆ๋กœ์šด ๋ฐฐ์—ด์„ ๋ฐ˜ํ™˜. ๋‘ ๋ฒˆ์งธ ์ธ์ˆ˜ ์ง์ „๊นŒ์ง€ ์ถ”์ถœํ•˜๊ณ , ๋‘ ๋ฒˆ์งธ ์ธ์ˆ˜๋ฅผ ์ƒ๋žตํ•˜๋ฉด ๋Œ€์ƒ ๋ฐฐ์—ด์˜ ๋๊นŒ์ง€ ์ถ”์ถœ.
  • some : ๋Œ€์ƒ ๋ฐฐ์—ด์˜ ์–ด๋–ค ์š”์†Œ๋ผ๋„ ์ฝœ๋ฐฑ ํ…Œ์ŠคํŠธ๋ฅผ ํ†ต๊ณผํ•˜๋Š”์ง€ ํ™•์ธ. every ๋ฉ”์„œ๋“œ๋Š” ๋ชจ๋‘ ํ†ต๊ณผํ•˜๋Š”์ง€ ํ™•์ธํ•˜๋Š”๋ฐ some ๋ฉ”์„œ๋“œ๋Š” ํ•˜๋‚˜๋ผ๋„ ํ†ต๊ณผํ•˜๋Š”์ง€ ํ™•์ธ.
  • sort : ๋Œ€์ƒ ๋ฐฐ์—ด์„ ์ฝœ๋ฐฑ์˜ ๋ฐ˜ํ™˜ ๊ฐ’์— ๋”ฐ๋ผ ์ •๋ ฌ. ์ฝœ๋ฐฑ์„ ์ œ๊ณตํ•˜์ง€ ์•Š์œผ๋ฉด, ์š”์†Œ๋ฅผ ๋ฌธ์ž์—ด๋กœ ๋ณ€ํ™˜ํ•˜๊ณ  ์œ ๋‹ˆ์ฝ”๋“œ ์ฝ”๋“œ ํฌ์ธํŠธ ์ˆœ์„œ๋กœ ์ •๋ ฌ. ๋Œ€์ƒ ๋ฐฐ์—ด ์›๋ณธ์ด ๋ณ€๊ฒฝ.
    • ์Œ์ˆ˜: a๋ฅผ ๋‚ฎ์€ ์ˆœ์„œ๋กœ ์ •๋ ฌ
    • 0: ์ˆœ์„œ ๋ณ€๊ฒฝ ์—†์Œ
    • ์–‘์ˆ˜: b๋ฅผ ๋‚ฎ์€ ์ˆœ์„œ๋กœ ์ •๋ ฌ
const numbers = [4, 17, 2, 103, 3, 1, 0]
numbers.sort()
console.log(numbers) // [0, 1, 103, 17, 2, 3, 4] → ๋ฌธ์ž์—ด๋กœ ๋ณ€๊ฒฝํ•ด์„œ ์•ž์ž๋ฆฌ๋งŒ ์ธ์‹ํ•ด์„œ ์˜ฌ๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌ

numbers.sort((a, b) => a - b)
console.log(numbers) // [0, 1, 2, 3, 4, 17, 103]

numbers.sort((a, b) => b - a)
console.log(numbers) // [103, 17, 4, 3, 2, 1, 0]