λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
DEV

JavaScript : Array

by camille: 2024. 10. 20.
728x90
λ°˜μ‘ν˜•

javascript# πŸ“™ Array : λ°°μ—΄

배열은 νŠΉμ •ν•œ μš”μ†Œλ“€(데이터듀)을 일렬둜 μΌμ •ν•˜κ²Œ λͺ¨μ•„놓은 μ§‘ν•©μœΌλ‘œ
λ°°μ—΄μ•ˆμ—λŠ” μš”μ†ŒμΈ, elementλ“€λ‘œ κ΅¬μ„±λ˜μ–΄ μžˆλŠ”λ°, μ˜ˆμ‹œλŠ” μ•„λž˜μ™€ κ°™λ‹€.
let CamilleArray = [19, 50, 'What', false]
배열에 λ“€μ–΄κ°ˆ 수 μžˆλŠ” 데이터 νƒ€μž…μ€ μ•„λ¬΄κ±°λ‚˜ λ“€μ–΄κ°ˆ 수 있으며, 심지어 λ°°μ—΄μ•ˆμ— λ‹€λ₯Έ λ°°μ—΄ λ˜ν•œ λ“€μ–΄κ°ˆ 수 μžˆλ‹€.

λ°°μ—΄μ˜ λ˜λ‹€λ₯Έ νŠΉμ§•μ€ λ°°μ—΄μ•ˆμ—λŠ” μˆœμ„œκ°€ μžˆλ‹€λŠ” 점이고, 0λΆ€ν„° μˆœμ„œ(index)λ₯Ό μ…€ 수 μžˆλ‹€. μ—¬κΈ°μ„œ 19λŠ” 0번째의 μš”μ†Œμ΄λ‹€.

πŸ“Œ 1. μš”μ†Œμ— μ ‘κ·Όν•˜κΈ°

let fruits = ['Apple', 'Banana','Lemon',100]
let first = fruits[0]
console.log(first);
< Apple

fruit μ˜†μ— [0] μˆœμ„œλ²ˆν˜Έλ₯Ό μž…λ ₯ν•˜μ—¬ ν•΄λ‹Ή λ°°μ—΄μ˜ ν•΄λ‹Ή μš”μ†Œμ— μ ‘κ·Ό ν•  수 μžˆλ‹€.

πŸ“Œ 2. μš”μ†Œ μˆ˜μ •ν•˜κΈ°

μ‘μš©1

let fruits = ['Apple', 'Banana','Lemon',100]
let first = fruits[0]

fruits[0] = 'Strawberry';
console.log(fruits[0]);
< Strawberry

μ‘μš©2

let fruits = ['Apple', 'Banana','Lemon',100]
let first = fruits[0]

fruits[0] = 'Strawberry';
fruits[2] = 300;
console.log(fruits);

<['Strawberry', 'Banana', 300, 100]

πŸ“Œ 3. λ°°μ—΄ 길이 κ΅¬ν•˜κΈ°

let fruits = ['Apple', 'Banana','Lemon',100]
console.log(fruits.length)
< 4

μ—¬κΈ°μ„œ λ°°μ—΄μ˜ 길이가 4μ§€λ§Œ 인덱슀(μˆœμ„œ)λŠ” 3인 μ΄μœ λŠ” λ°°μ—΄μ˜ μ‹œμž‘μ„ 0λΆ€ν„° μ„ΈκΈ° λ•Œλ¬Έμ΄λ‹€.
0,1,2,3 총 λ°°μ—΄μ˜ κΈΈμ΄λŠ” 4μ΄μ§€λ§Œ 인덱슀의 끝은 3이라고 λ³Ό 수 μžˆλ‹€.
πŸ”” μœ λ…ν•΄μ•Όν•  점 ! 길이가 4인 배열은 인덱슀의 κ°€μž₯ 끝은 3이닀.

πŸ“Œ 4. λ°°μ—΄ μΆ”κ°€ 및 μ‚­μ œ ν•˜κΈ°

βœ” λ°°μ—΄ μΆ”κ°€ν•˜κΈ°

κΈ°λ³Έν˜• : λ°°μ—΄λͺ….push(μΆ”κ°€ν• λ‚΄μš©)

let fruits = ['Apple', 'Banana','Lemon',100]
fruits.push('Kiwi');
console.log(fruits)
<['Apple', 'Banana','Lemon',100, 'Kiwi']

βœ” λ°°μ—΄ μ‚­μ œν•˜κΈ°

pop - λ°°μ—΄ λμ—μ„œ λΆ€ν„° μ‚­μ œ

1.
let fruits = ['Apple', 'Banana','Lemon',100]
fruits.pop();
<['Apple', 'Banana', 'Lemon']
2.
let fruits = ['Apple', 'Banana','Lemon',100]
fruits.pop();
fruits.pop();
<['Apple', 'Banana']

shift -λ°°μ—΄μ˜ κ°€μž₯ 처음 λΆ€ν„° μ‚­μ œ

let fruits = ['Apple', 'Banana','Lemon',100]
fruits.shift();
<['Banana', 'Lemon', 100]

μœ„μ˜ κ·Έλ¦Όμ—μ„œλŠ”

splice - (λ°°μ—΄μ˜ index의 μ‹œμž‘μ ,μ‚­μ œν•  μš”μ†Œμ˜ 개수,μΆ”κ°€ν•˜κ³  싢은 μš”μ†Œ)ꡬ체적인 μˆœμ„œλ‘œ μ‚­μ œ

(인자 3κ°œκ°€ λ“€μ–΄κ°ˆ μˆ˜μžˆμ§€λ§Œ, splice λ©”μ„œλ“œλŠ” ν•„μš”μ— 따라 인자λ₯Ό μ΅œμ†Œ 1개만 μ“Έ μˆ˜λ„ μžˆλ‹€.)

μ‘μš©1

let num = [1,2,3,4,5];
num.splice(2,1,10);

console.log(num); // [ 1, 2, 10, 4, 5 ]
μ‘μš©2

let fruits = ['Apple', 'Banana','Lemon',100]
fruits.splice(1,2);
<['Banana', 'Lemon']

slice - (λ°°μ—΄μ˜ index의 μ‹œμž‘μ , λ°°μ—΄μ˜ index의 끝점)

첫번째 인자 : λ°°μ—΄μ˜ index의 μ‹œμž‘μ 
λ‘λ²ˆμ§Έ 인자 : λ°°μ—΄μ˜ index의 끝점
예λ₯Ό λ“€μ–΄, [1,2,3,4,5] λΌλŠ” 배열이 μžˆμ„ λ•Œ, 숫자 2~4κΉŒμ§€λ§Œ 남기고 싢을 λ–Ό

```javascript

let nums = [1,2,3,4,5]
let nums_new = nums.slice(1,4)

console.log(nums) // [ 1, 2, 3, 4, 5 ]
console.log(nums_new) // [ 2, 3, 4 ]
let nums = [1,2,3,4,5]
let nums_new = nums.slice(1,4)

console.log(nums) // [ 1, 2, 3, 4, 5 ]
console.log(nums_new) // [ 2, 3, 4 ]

μ‹œμž‘μ μΈ indexκ°€ 1인 μš”μ†ŒλΆ€ν„° 끝점인 indexκ°€ 4인 μš”μ†ŒκΉŒμ§€λ₯Ό 포함해 2,3,4λ₯Ό 담은 배열을 λ¦¬ν„΄ν•œλ‹€.
slice λ©”μ„œλ“œλ₯Ό μ‚¬μš©ν•œ 이후에 원본 배열인 numsλ₯Ό μ½˜μ†”μ°½μ—μ„œ 확인해보면 λ³€ν•¨μ—†λŠ” 것을 확인할 수 μžˆλŠ”λ°, sliceλ₯Ό μ‚¬μš©ν•  λ•ŒλŠ” κΌ­ μƒˆλ‘œμš΄ λ³€μˆ˜λͺ…을 ν• λ‹Ήν•΄μ£Όμ–΄μ•Ό ν•œλ‹€.

πŸ”” μŒμˆ˜κ°€ λ“€μ–΄κ°€λŠ” 경우!!

let nums = [1,2,3,4,5]
let nums_new = nums.slice(-2)

console.log(nums) // [ 1, 2, 3, 4, 5 ]
console.log(nums_new) // [ 4, 5 ]

μŒμˆ˜κ°€ λ“€μ–΄κ°ˆ 경우 λμ—μ„œλΆ€ν„° ν•΄λ‹Ήν•˜λŠ” 숫자 만큼의 μš”μ†Œλ₯Ό 배열에 λ‹΄μ•„ λ¦¬ν„΄ν•˜κ²Œ λœλ‹€.

filter : filter() λ©”μ„œλ“œλŠ” array κ΄€λ ¨ λ©”μ„œλ“œλ‘œ 쑰건에 λ§žλŠ” μš”μ†Œλ“€λ§Œ λͺ¨μ•„μ„œ μƒˆλ‘œμš΄ 배열을 λ°˜ν™˜ν•œλ‹€.

λ§Œμ•½ 쑰건에 λΆ€ν•©λ˜λŠ” μš”μ†Œκ°€ 아무것도 μ—†λ‹€λ©΄ 빈 배열을 λ°˜ν™˜ν•œλ‹€.
filter() λ©”μ„œλ“œλ„ map() λ©”μ„œλ“œμ™€ λ§ˆμ°¬κ°€μ§€λ‘œ 크게 filter(callbackFunction, thisAgr) 2개의 인자λ₯Ό 가진닀.

callbackFunction μ•ˆμ—μ„œ 3개의 인자 (element, index, array) λ₯Ό κ°€μ§€λŠ”λ° 첫번째 뢀뢄인 element 인자만 ν•„μˆ˜λ‘œ μ§€μ •λ˜μ–΄μ•Όν•˜κ³  λ‚˜λ¨Έμ§€λŠ” 선택적이닀.

let fruits = ['apple', 'banana', 'grapes', 'mango', 'orange'];

function filtered () {
  let result = fruits.filter(fruits => fruits.includes('ap'));
  return result;
}
console.log(filtered());
let courses = [
{level:'easy', subject: "English" }, 
{level:'hard', subject: "Mathmatic" }, 
{level:'medium', subject: "Literature" }, 
{level:'hard', subject: "Science" }, 
{level:'medium', subject: "Socialogy" }
];

function filtered(){
  let hardWord = courses.filter(courses => courses.level ==='hard');
  return hardWord;
}
console.log(filtered());

value > 10 μ΄λΌλŠ” 쑰건에 λ§žλŠ” μš”μ†Œλ“€λ‘œλ§Œ 이루어진 μƒˆλ‘œμš΄ 배열을 λ§Œλ“€μ—ˆλ‹€.

let numbers = [10, 4, 32, 17, 5, 2];

// 첫번째 방법 (filter()의 μΈμžμ—μ„œ λ°”λ‘œ ν•¨μˆ˜λ₯Ό μ¨μ£ΌλŠ” 방법) 
let result = numbers.filter((value)=> value > 10);

console.log(result);      // [ 32, 17 ]

// λ‘λ²ˆμ§Έ 방법 (λ°–μ—μ„œ ν•¨μˆ˜λ₯Ό μ„ μ–Έν•˜κ³  filter()μΈμžμ—μ„œ callbackν•˜λŠ” 방법) 
function isBiggerThanTen (value) {
    return value > 10;
}

let result = numbers.filter(isBiggerThanTen);

console.log(result);      // [ 32, 17 ]

πŸ“Œ 5. λ°°μ—΄ μ•ˆ λ°°μ—΄

let camille = ['Ca','Miile',[1,2,3,4,5],true,false]
console.log(camille[2]);
< [1, 2, 3, 4, 5]

μ—¬κΈ°μ„œ, λ°°μ—΄μ•ˆμ— μžˆλŠ” λ°°μ—΄ μžμ²΄κ°€ 2번째 μš”μ†Œλ‘œ 좜λ ₯λœλ‹€.


###  βœ”  λ°°μ—΄μ•ˆμ— 배열에 μ ‘κ·Όν•˜κΈ°

```javascript
let camille = ['Ca','Miile',[1,2,3,4,5],true,false]
console.log(camille[2][0]);
<1

*μ€‘μ²©λœ λ°°μ—΄ ! *μ—¬κΈ°μ„œ λ°°μ—΄μ•ˆμ˜ 호좜된 μš”μ†ŒλŠ” λŒ€κ΄„ν˜ΈλŠ” 없이 1ν•˜λ‚˜κ°€ λ‚˜μ˜¨λ‹€.

πŸ“Œ 6. λ°°μ—΄μ˜ 길이λ₯Ό ν™œμš©ν•œ κ·œμΉ™ 생성

let camille = ['Ca','Miile',[1,2,3,4,5],true,false]
console.log(camille[camille.length-1]);
<false

πŸ”” camille.length-1 λ°°μ—΄μ˜ 길이가 μ—„μ²­ κΈΈκ±°λ‚˜ ν•˜λ©΄, λ§ˆμ§€λ§‰ 숫자λ₯Ό 얻기에 μ–΄λ €μšΈ 수 μžˆλ‹€.
λ”°λΌμ„œ κ·œμΉ™μ„ ν™œμš©ν•΄ 식을 λ§Œλ“€μ–΄ μ μš©ν•˜λ©΄ κ°€μž₯ λ§ˆμ§€λ§‰ μš”μ†Œλ₯Ό μ–Έμ œλ“  ν”„λ¦°νŠΈν•˜κ²Œ ν•  수 μžˆλ‹€. λ°°μ—΄μ˜ 총길이 -1 ν•˜λ©΄ λ§ˆμ§€λ§‰ μš”μ†Œμ˜ 인덱슀 λ„˜λ²„μ— μ ‘κ·Ό ν•  수 μžˆλ‹€.
결과적으둜,
camilleμ΄λΌλŠ” 배열에 κ°€μž₯ λ§ˆμ§€λ§‰ μš”μ†ŒλŠ”console.log(camille[camille.length-1]) 둜 λ„μΆœν•΄ λ‚Ό 수 μžˆλ‹€.

728x90
λ°˜μ‘ν˜•

'DEV' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

운영체제 : ꡬ쑰, κΈ°λŠ₯  (0) 2024.10.20
JavaScript : 반볡문  (0) 2024.10.20
JavaScript : 쑰건문  (0) 2024.10.20
JavaScript : Function  (0) 2024.10.20
운영체제(μ •μ˜, λͺ©μ , λΆ„λ₯˜)  (0) 2024.10.20