배열

릭터·2026년 4월 8일

Javascript

목록 보기
13/13

배열은 순서가 중요합니다.

배열의 선언과 초기화

세가지 경우가 있어요
바로 값을 넣는 경우와
빈 배열을 생성하는 경우
또는 new Array로 생성하는 경우입니다.

const number = [1,2,3,4,5];
console.log(number[0]);

let array = new Array(2); // size
console.log(array);

array = new Array(1,2,3,4,5);
console.log(array);

갯수 추가,수정,삭제

배열[인덱스 번호]로 수정하거나 추가합니다
삭제 시는 delete 배열[인덱스번호]를 해줍니다.

number[3] = -4; // 수정
number[5] = 7; // 추가
console.log(number.length,number);

number[8] = 7;
console.log(number.length,number);

delete number[1] // 삭제
console.log(number.length,number);

인덱스 번호와 포함되어 있는지 확인하는 함수

배열.indexOf('배열에 포함되어있는지 알고 싶은 글자') > 해당 글자가 있는 인덱스 번호 리턴
배열.includes('배열에 포함되어있는지 알고 싶은 글자') > 해당 글자 여부 리턴 T /F

let name1 = ['릭터','릭','터','rickter'];
console.log(name1);
let name2 = new Array('rick','ter','hi');
console.log(name2);

console.log(name1.indexOf('릭터')); // 있으면 1
console.log(name2.indexOf('릭터')); // 없으면 -1

console.log(name1.includes('릭터')); // 있으면 true 없으면 false
console.log(name2.includes('ter'));

추가 삭제

unshift() 는 맨 앞에 추가
push() 는 맨 뒤에 추가
shift()는 첫 번째 아이템 삭제
pop() 은 마지막 아이템 삭제

name1.push('하이'); // 맨 뒤에 추가
console.log(name1, name1.length);
name1.unshift('hello'); // 맨 앞에 추가

let frist = name1.shift(); // 첫번째 아이템 삭제
console.log(frist,name1);

let last = name1.pop(); // 마지막 아이템 삭제
console.log(last,name1);

특정한 index에서 삭제 및 추가

특정한 인덱스에서 count 만큼 삭제

splice(index,count)

const deleted = name1.splice(1,1); 
console.log(name1 , "-",deleted);

특정한 인텍스에서 추가

splice(index,count,추가할 것들)

name1.splice(1,0,'헬로우','하하');
console.log(name1);

일 부분으로 새로운 배열을 만들기

slice(0,2)는 인덱스 0 에서 2까지 0, 1 번째 것이 들어갑니다.
그리고 -3은 뒤에서 -1 -2 -3 까지 들어갑니다.

let name3 = name1.slice(0,2);
console.log(name3,"-",name1);
name3 = name1.slice(-3) // - 붙으면 뒤쪽 부터
console.log(name3,"-",name1);

배열 합치기

배열1.concat(배열2)을 사용합니다.

const name4 = name1.concat(name2);
console.log(name4);

배열 역순 만들기

배열.reverse() 사용합니다.

const rname = name4.reverse();
console.log(rname);

배열을 문자열로 만들기(합치기)

배열.join(''); ()안에는 구분자!

let strName = name4.join(', ');
console.log(strName);

배열을 sort 정렬

string의 경우

string배열.sort(); 사용

const fruits = [ 'Banana','Apple','Orange','Mango'];
console.log(fruits.sort());

숫자의 경우

화살표 함수 사용해서
두 개 숫자를 가져와서 비교해줍니다
앞의 숫자와 뒤의 숫자를 비교 후
앞의 숫자 - 뒤의 숫자 >0인 경우 자리 바꿔줍니다.(오름차 경우)

const numbers = [101,2,102,30,42,51];
numbers.sort((n1,n2)=> n1 - n2); // 오름차순
console.log(numbers);
numbers.sort((n1,n2)=> n2 - n1); // 내림차순

객체의 경우

숫자 경우

const items = [
    {name:'Apple',price:100},
    {name:'Orange',price:50},
    {name:'Banana',price:200},
]
items.sort((n1,n2) => n1.price - n2.price); // 오름차 순
console.log(items);
items.sort((n1,n2) => n2.price - n1.price); // 내림차 순
console.log(items);

문자 경우
문자열배열1.localeCompare(문자열배열2);
문자열 비교는 따로 메서드가 있어서 위의 메서드를 사용해주면 됩니다.

items.sort((n1,n2) => n1.name.localeCompare(n2.name)); // 오름차 순
console.log(items);

items.sort((n1,n2) => n2.name.localeCompare(n1.name)); // 내림차 순
console.log(items);

array 순회

for문 for~of 문 forEach문
for문은 i를 인덱스 번호로 해서 하나씩 배열을 꺼낼 수 있고

for ~ of는 배열에 있는 모든 것을 다 꺼낼 때 좋습니다.

forEach는 name은 배열에서 하나씩 꺼내져 나오는 것
하나씩 꺼내져 나오는 인덱스의 번호는 index에 있고 array는 꺼내져 나올 배열입니다.(forEach()를 호출한 배열이죠)

for(let i =0;i<name4.length;i++){
    console.log(name4[i]);
}
for(name of name4){
    console.log(name);
}
name4.forEach((name,index,array) => {
    console.log(`${array.length}명 중 ${index}번째인 ${name}입니다.`);
});

map()

고차원 함수인 map은 함수를 인자로 받고 []로 리턴 해줍니다.
그러므로 값을 하나씩 돌면서 바꾸고 []로 받을때 유용합니다.
예를 들어 밑의 코드처럼 배열에 있는 모든 수에 곱하기 2를 해야하는 경우처럼요

const nums = [1,2,3,4,5];
const doubled = nums.map((num) => num *2);

filter()

는 말 그대로 걸러주는 역할을 합니다
조건을 걸어주고 해당하는 경우의 수를 모아서 []로 리턴해줍니다.

const nums = [1,2,3,4,5];
const evenNumbers = nums.filter((num) => num % 2 ===0);
console.log(evenNumbers); // [2,4]

reduce(함수,초기값)

reduce는 하나로 줄여주는 건데요
앞의 수들의 내용을 하나로 바꿔주려고 사용을 합니다.

const sum = evenNumbers.reduce((acc,cur) => {
    return acc + cur
},0);
console.log(sum)

이런 식으로 위 조건식에서 골라진 []에 수를 acc에 더해서 하나의 수로 만드는 것 처럼요
보통 acc에 계속 더해진 값이 저장되고 cur는 evenNumbers에서 넘어오는 값입니다.
그래서 계속 값이 넘어오면 acc에 더해지는거죠


만약 이런 문제가 나온다면
1~5까지의 숫자 중 2의 배수만 골라서 2배 한 수의 합은?
위에 쓴 함수들(filter,map)은 []로 리턴 되기 때문에 계속 이어서 쓰기가 가능합니다.

const nums = [1, 2, 3, 4, 5]
    .filter((num) => num % 2 === 0)
    .map((num) => num * 2)
    .reduce((acc, cur) => acc + cur,0);
console.log(nums)

이렇게 이어쓰기가 가능합니다.

profile
풀스택 개발자를 꿈 꾸는 릭터입니다.

0개의 댓글