국비 교육/프론트엔드
[자바스크립트] 함수 -3 (배열처리, 문자열처리)
육츠
2024. 3. 2. 17:01
배열 처리 함수
slice, splice, push, pop, sift, unshift 등의 배열을 처리하는 여러가지 함수
함수 | 내용 |
join("문자열") | 전달인자의 문자열을 구분자로 하여, 배열을 문자열로 반환 |
reverse() | 배열을 뒤집는다. |
slice(start , end) | 배열의 일부분을 반환, -1 은 마지막 데이터를 의미한다. 원본을 건드리지 않는다. |
splice(n[, m, ...x]) | 부분 배열로 추출하거나 다른 값으로 대체한다. 원본에 영향을 미친다. |
sort() | 오름차순 정렬 |
concat(...item) | 여러 배열을 하나로 합친다. |
push(item), pop() | 배열의 끝에 데이터를 삽입하거나 추출, 원본이 수정된다. (Stack 자료구조처럼 동작) |
unshift(item), shift | 배열의 앞에 데이터를 삽입하거나 추출, 원본이 수정된다. (Stack 자료구조처럼 동작) |
toString() | 배열을 문자열로 반환 |
- join, reverse, slice
let arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
console.log(arr.join("/"));
// console.log(arr.reverse()); // 원본을 뒤집는다.
let temp = arr.slice(1,5); // 새로운 복사본
arr[2] = 30;
console.log(arr); // 원본 : 30으로 바뀜
//temp[0]= 22;
console.log(temp);
temp = arr.slice(0, -2); // 마지막 데이터 전까지 복사본을 가져옴
console.log('부분배열의 결과: ' + temp);
결과
- splice()
let color = ['빨','주','노','초','파','남','보'];
temp = color.splice(4); // 인덱스 4부터 끝까지
console.log(temp);
console.log(color); // 원본에 영향을 미친다.
* 특정 위치의 데이터를 잘라낸다.
color = ['빨','주','노','초','파','남','보'];
temp = color.splice(2,1);
console.log(temp);
console.log(color); // 원본에 영향을 미친다.
* 다른 값으로 대체
color = ['빨','주','노','초','파','남','보'];
temp = color.splice(2,1,'Yello','노랑');
console.log(color); // 노랑을 대체
결과
- concat()
let food = ['라볶이', '뼈해장국', '파스타'];
let drink = ['물', '주스', '커피'];
let fruit = ['사과', '포도', '딸기'];
let lunch = food.concat(drink);
console.log(lunch)
lunch = food.concat(drink, fruit);
console.log(lunch)
- toString()
console.log(lunch.toString());
- push(item), pop()
let data = '짜장면';
food.push(data);
console.log(food)
data = food.pop(); // 마지막 값을 꺼낸다.
console.log(data);
food = ['라볶이'];
data = food.pop();
console.log(data);
data = food.pop(); // 어떤 값?
console.log(data);
- unshift(item), shift()
drink = ['물', '주스', '커피'];
data = drink.shift();
console.log(data);
drink.unshift('맥주');
console.log(drink);
문자열 관련 메소드
문자열은 sequence 이면서 immutable한 타입이다.
함수 | 내용 |
charAt(index), at(index) | 인덱스 위치의 문자 1개 반환 |
startsWidth(str), endsWith(str), includes(str) |
|
replace(m, n) | 문자열 m을 찾아서 n으로 변경 |
slice(index1, index2) | 부분 문자열 반환 (index1 ~ index2 -1) |
substr(), substring() | 부분 문자열 반환 (ES5 이후에는 substr() 사용을 권장하지 않음) |
- charAt(), at(), startsWidth(str), endsWith(str), includes(str)
console.log(data.charAt(3));
console.log(data.at(3));
data = 'Hello, world! Welcome to the Javascript~';
console.log(data.startsWith('Hello'));
console.log(data.endsWith('~'));
console.log(data.includes('d!'));
console.log(data.includes('~'));
console.log(data.includes('world')); // 반환값 boolean
console.log(data.search('world')); // 반환값 : 7
console.log(data.search('earth')); // 반환값 : -1 = 해당되는 데이터가 없다는 것을 의미
- replace()
let text = data.replace('Hello', 'Hi');
console.log('원본 : ' + data);
console.log('변경본 : ' + text);
- slice()
(앞,뒤) => 뒤는 무조건 앞에 값보다 커야한다. (추출실패(에러는 아님))
console.log(data.slice(5,10)); // , wor
console.log(data.slice(10,5)); // (앞,뒤) => 뒤는 무조건 앞에 값보다 커야한다. (추출실패(에러는 아님))
console.log(data.slice(-5,-1)); // ript
console.log(data.slice(-1,-5)); // 앞 < 뒤 규칙을 위배
- substr(n,m)
n 은 index, m 은 개수를 의미한다. ES5 이후에는 substr() 사용을 권장하지 않기 때문에 확인용으로 사용됨
console.log('substr(): ' + data.substr(5,10)); // , world! W
- substring(n,m)
부분 문자열 추출 (n,m : 인덱스), 음수 사용 하지 못함.
(앞,뒤) => 규칙 따로 존재하지 않는다.
console.log('substring(): ' + data.substring(5,10)); // , wor
console.log('앞 < 뒤 규칙 없음: ' + data.substring(10,5)); // 앞 < 뒤가 아니어도 된다.
console.log('인덱스 음수 사용 불가: ' + data.substring(-1,2)); // He => 0 위치에서 2위치 전까지 가져온다.
- split(str)
구분문자열을 전달하여 문자열을 배열로 분리
let arr = data.split(' ');
console.log('split 된 데이터 arr의 타입: ' + typeof arr);
console.log('반환된 배열의 길이 : ' + arr.length);
arr.forEach((item) => console.log(item));
- trim()
좌우 공백 제거
data = 'Hello~ ';
console.log('문자열의 길이 : ' + data.length);
console.log('좌우공백을 제거한 문자열의 길이: ' + data.trim().length);
문자열 처리 예제
html 본문
<body>
<div>
아이디 : <input type="text" id="userid" placeholder="아이디를 5~10자 사이로 입력">
생년월일 : <input type="text" id="birthday" placeholder="생년월일 8자 입력">
<input type="button" value="check" id="check">
</div>
</body>
</html>
자바스크립트
let check = document.getElementById('check');
let userid = document.getElementById('userid');
let birthday = document.getElementById('birthday');
// 사용자가 입력한 데이터는 innerHTML 사용할 수 없다.
check.addEventListener('click', validation); // 함수와 연결
function validation(){
// alert('연결 확인'); : 연결 확인
let id = userid.value;
if(!(id.trim().length >= 5 && id.trim().length <= 10)){
alert('정확하게 입력하세요.');
userid.select(); // 정확하게 입력할 수 있도록 포커스를 잡아준다
return; // 프로그램을 더 진행시키지 않는다
}
// isNaN 문자가 포함되어 있으면 경고창
let birth = birthday.value;
if(birth.trim().length != 8 || isNaN(birth) ){
alert('생년월일 정확하게 입력!');
birthday.select(); // HTML 객체여야 한다.
return;
}
alert('제출완료');
}
사용자가 입력한 데이터는 innerHTML 사용할 수 없다. |
userid.select(); -> 정확하게 입력할 수 있도록 포커스를 잡아준다 |
isNaN 문자가 포함되어 있는지 체크 |