🌈 배열(array)
🔥 배열 선언
🔥 배열 내 요소 찾기(indexing)
🔥 추가 및 제거(push, pop, shift, unshift, splice, concat)
🔥 배열 위치 찾기(Search)
🔥 문자열로 변환(join)
🔥 리스트로 변환(split)
🔥 역순 정렬(reverse)
🔥 요소 추출(slice)
🔥 콜백 함수 관련
1.배열 선언
- 순서만 있으면되는 요소의 집합이면 배열([])을 사용하고, key와 value로 쌍을 이뤄야 할 때는 일반 객체({})를 이용함
- 배열([])도 객체 종류 중 하나임
- 일반 객체({})는 순서를 고려않는 자료구조이기 때문에 {}는 새로운 값을 기존 객체 사이에 삽입하는 개념이 없음
- 즉, 순서가 필요할 때 []을 사용하고 순서는 상관없고 key를 통해 값을 제어할 때는 {}를 사용
- 은 수정, 추가, 삭제, 요소값 확인, 출력 등 객체에 비해 비교적 자유롭게 다룰 수 있음
- JavaScript의 배열(array)는 Python에 리스트(list)와 유사
const arr1 = new Array();
const arr2 = [1, 2, 3, 4];
const data1 = [1,2,'jaewon',null];
const data2 = [
{name:'jaewon', age:30},
{name:'haezin', age:29}
];
const data3 = [
[1,2,3,4],
[5,6,7,8]
];
console.log(data1[3])
console.log(data2[0].age)
console.log(data3[0][2])
2) 배열 내 요소 찾기(indexing)
- idnex값을 통해 위치한 자리의 요소값을 찾을 수 있음
- 반복문 가능 ⇢ "for", "for of", "for each"
const fruits = ["🍎", "🍌", "🥝"];
console.log(fruits);
console.log(fruits[0]);
console.log(fruits[1]);
console.log(fruits[fruits.length - 1]);
for (let i = 0; i < fruits.length; i++) {
console.log(fruits[i]);
}
for (let fruit of fruits) {
console.log(fruit);
}
fruits.forEach((fruit) => console.log(fruit));
3) 추가 및 제거
- 🔍 배열이름.push() : 요소 끝에서 넣기 👈 빠름
- 🔍 배열이름.pop() : 요소 끝에서 빼기 👈 속도 빠름
- 🔍 배열이름.unshift() : 앞에서 요소 넣기 👈 속도 느림
- 🔍 배열이름.shift() : 요소 앞에서 빼기 👈 속도 느림
- 🔍 배열이름.splice(index,amount,replace) : index는 인덱스 위치, amount는 제거할 갯수, replace는 대체할 것
- 🔍 배열A.concat(배열B) : 2개 배열 합치기 ⇢ 배열B의 요소를 배열A에 추가
fruits.push("🍓", "🍑");
console.log(fruits);
fruits.pop();
console.log(fruits);
fruits.pop();
console.log(fruits);
fruits.unshift("🍇", "🍉");
console.log(fruits);
fruits.shift();
console.log(fruits);
fruits.shift();
console.log(fruits);
fruits.push("🍇", "🍉", "🍋");
console.log(fruits);
fruits.splice(2, 2);
console.log(fruits);
fruits.splice(2, 1, "🍍", "🫐");
console.log(fruits);
const fruits2 = ["🍐", "🥥"];
const combineFruits = fruits.concat(fruits2);
console.log(combineFruits);
4. 배열 위치 찾기(Search)
- 🔍 배열이름.indexof('target') : 배열에 첫번째 요소부터 순차적으로 탐색하여 타켓이 존재한 첫번째 위치값을 알려줌
- 🔍 배열이름.lastIndexOf('target') : 배열이 마지막 요소부터 역순으로 탐색하여 타켓이 존재한 첫번째 위치값을 알려줌
- 🔍 배열이름.includes('target') : 타켓이 배열에 포함되어있는지 여부를 탐색하여 true, false로 알려줌
console.log(fruits);
console.log(fruits.indexOf("🍌"));
console.log(fruits.indexOf("🫐"));
console.log(fruits.indexOf("🥥"));
console.log(fruits);
fruits.push("🍎");
console.log(fruits);
console.log(fruits.indexOf("🍎"));
console.log(fruits.lastIndexOf("🍎"));
console.log(fruits.includes("🍎"));
console.log(fruits.includes("🥥"));
5. 문자열로 변환하기
- 🔍 배열이름.join() : 배열내 요소들을 모두 결합해서 문자열로 변환하고, ()안에 옵션이 있으면 요소 사이에 넣어줌
{
const fruits = ["apple", "banana", "orange"];
const result = fruits.join("@");
console.log(result);
}
6. 문자열을 리스트로 변환하기
- 🔍 문자열.split() : 문자열 내 값들을 옵션(분리 기준, 갯수)을 기준으로 리스트로 반환
- Python에서는 옵션을 넣어주지 않으면, 자동으로 '' 기준으로 분리해주지만, JavaScript에서는 어떤 기준으로 분리할지 기준을 꼭 옵션을 넣어줌
- 두번째 옵션으로는 숫자를 지정해 Limit을 정할 수 있음
const fruits = "🍎, 🥝, 🍌, 🍒";
const result = fruits.split(",", 2);
console.log(result);
7.배열 요소의 순서를 역순으로 정렬하기
- 🔍 배열이름.reverse() : 배열 내 요소들의 순서를 역순으로 정렬
- 원본 배열 자체를 수정
const array = [1, 2, 3, 4, 5];
const result = array.reverse();
console.log(result);
console.log(array);
8.배열 내 요소 추출
- 🔍 배열이름.slice() : 기존 배열에 영향을 주지 않고 원하는 부분 추출
- 배열 원본에는 영향을 미치지 않고, 추출된 복사본을 갖고 있음
const array = [1, 2, 3, 4, 5];
const result = array.slice(2, 5);
console.log(result);
console.log(array);
9.콜백 함수
1) 콜백 함수조건에 해당하는 첫번째 요소를 찾아 반환
- array명.find(콜백함수) : 배열 내 요소들을 콜백함수에 넣어 순차적으로 탐색하여, 콜백함수의 조건에 일치하는 요소를 찾아 반환
- 일치하는 요소가 있으면 바로 탐색 종료
class Student {
constructor(name, age, enrolled, score) {
this.name = name;
this.age = age;
this.enrolled = enrolled;
this.score = score;
}
}
const students = [
new Student("A", 29, true, 45),
new Student("B", 28, false, 80),
new Student("C", 30, true, 90),
new Student("D", 40, false, 66),
new Student("E", 18, true, 88),
];
{
const result = students.find((value) => value.score === 90);
console.log(result);
}
2) 콜백함수를 실행하여, 배열 내 요소를 각 각 변환시켜 반환
- array.map(콜백함수) : 배열 내 요소들을 각 각 순차적으로 콜백 함수에 넣어 처리한 뒤 반환 받음
class Student {
constructor(name, age, enrolled, score) {
this.name = name;
this.age = age;
this.enrolled = enrolled;
this.score = score;
}
}
const students = [
new Student("A", 29, true, 45),
new Student("B", 28, false, 80),
new Student("C", 30, true, 90),
new Student("D", 40, false, 66),
new Student("E", 18, true, 88),
];
{
const result = students.map((value) => value.score);
console.log(result);
}
3) 배열 내 요소를 각 각 콜백 함수로 전달해 일치여부 확인 후 boolean으로 반환
- array.some(콜백함수) : 콜백함수의 조건에 일치하는게 하나라도 있으면 true, 모두 일치하지 않을 때 false
- array.every(콜백함수) : 콜백함수의 조건에 일치하지 않는게 하나라도 있으면 false, 모두 일치할 때만 true
class Student {
constructor(name, age, enrolled, score) {
this.name = name;
this.age = age;
this.enrolled = enrolled;
this.score = score;
}
}
const students = [
new Student("A", 29, true, 45),
new Student("B", 28, false, 80),
new Student("C", 30, true, 90),
new Student("D", 40, false, 66),
new Student("E", 18, true, 88),
];
const result1 = students.some((value) => value.score < 50);
console.log(result1);
const result2 = students.every((value) => value.score < 50);
console.log(result2);
4) 배열의 요소를 중복하여 처리하기
- 배열 내 요소들을 순차적으로 더해주거나, 빼주는 등 연산 후 결과값이 필요할 때 사용
- 시작 기준을 지정해줘야 함
class Student {
constructor(name, age, enrolled, score) {
this.name = name;
this.age = age;
this.enrolled = enrolled;
this.score = score;
}
}
const students = [
new Student("A", 29, true, 45),
new Student("B", 28, false, 80),
new Student("C", 30, true, 90),
new Student("D", 40, false, 66),
new Student("E", 18, true, 88),
];
const result = students.reduce((prev, curr) => {
console.log("-------");
console.log(prev);
console.log(curr);
return prev + curr.score;
}, 0);
console.log(result);
const result = students.reduce((prev, curr) => prev + curr.score, 0);
console.log(result / students.length);
5) 배열 내 요소 정렬하기
- 오름차순(정방향) : 배열네임.sort((a,b) => a - b) 👈 sort()와 동일
- 내림차순(역방향) : 배열네임.sort((a,b) => b - a)
const upresult = students.map((value) => value.score);
console.log(upresult);
console.log(upresult.sort((a, b) => a - b));
console.log(upresult.sort().join());
const downresult = students.map((value) => value.score);
console.log(downresult);
console.log(downresult.sort((a, b) => b - a));
console.log(downresult.sort((a, b) => b - a).join())