메소드를 알기전에 우리는 객체에 대해 먼저 이해해야 한다.
이름key
과 값value
로 이루어진 property
를 객체라고 부른다.
cat.name = "금이"
cat.color = "금색"
cat.favorite = "츄르"
자바스크립트의 객체는 다양한데, 함수가 들어올수도 있다.
이것을 메소드
라고 한다.
cat.play()
cat.grooming()
cat.fight()
자바스크립트는 이러한 메소드를 이용해 객체에게 명령을 내릴 수 있게된다.
for반복문은 조건을 걸어 배열을 정리할수있는 유용한 문법이지만, for을 두번 쓰게되는 이중for문을 사용하게 되면 코드의 가독성이 매우 떨어지는 문제가 발생한다.
ES6부터 arrow함수
화살표함수를 사용할 수 있다.
let arr = [1,2,3]
for(let i=0; i<arr.length; i++) {
console.log(arr[i])
}
arr.forEach(v => console.log(v))
// 위의 for문과 forEach메소드는 같은 console을 출력한다.
// arrow함수는 생략 가능한 것들이 있다.
arr.forEach(function (v) { (console.log(v)) })
arr.forEach((v) { (console.log(v) })
// 인자값이나 중괄호 내 코드가 하나, 한줄 일시 각각 생략이 가능하다.
arr.forEach(v => console.log(v))
위 코드에서 보인 forEach()는 배열에 쓸 수 있는 메소드 중 하나이다.
배열의 length
만큼 반복해서 콜백함수
를 호출한다.
콜백함수
의 매개변수로 value
에 요소값, index
에 배열인덱스, array
에 원본 배열이 들어온다.
배열.forEach((value, index, arry) => { ..code.. })
배열의 value를 비교해 같으면 1
을, 다르면 -1
을 리턴한다.
자바스크립트는 배열을 담을시 객체형태로 담게된다.
문자열, 숫자도 각각 객체형태로 들어오게된다.
문자와 숫자 하나하나에도 key
와 value
가 존재하는 것이다.
자바스크립트에 기본으로 내장되어 있는 class
다.
문자를 배열에 넣기 위해 변환한다.
이 때 문자열은 object
형태로 배열에 들어가게 된다.
let txt = '1e5315166152e1152z1d1v4b1n`
console.log(typeof txt) // string
let txtobj = new String(txt);
console.log(typeof txtobj) // obj
slice(start, end)
start
배열값을 추출할 인덱스시작점 부터
end
추출을 종료시킬 인덱스를 정한다.
인덱스 시작점이 정해지지 않으면 0부터 시작한다.
시작점이나 종료점을 음수로 지정할 경우, 배열의 끝에서부터 길이를 나타낸다.
function sliceFive1() {
let arrayFive = [];
for(let i=0; i<txtobj.length; i+=5) {
let cal = txtobj.slice(i, i+5)
// i가 반복되며 i인덱스시작점부터 i+5인덱스종료점까지 추출한다.
arrayFive.push(cal);
// 추출한 값을 새로운 배열에 push한다.
}
return arrayFive
}
console.log(sliceFive1())
배열 끝에 요소를 추가한다.
배열의 앞쪽에 요소추가 : .unshift()
let arr = [1, 2, 3]
arr.push(5);
// arr=[1, 2, 3, 5]
string.indexOf(searchvalue, position)
문자열string
에서 특정 문자열searchvalue
를 찾고, 검색된 문자열이 첫번째로 나타내는 index
를 리턴한다.
searchvalue
를 찾기 시작할 위치let arr = [5, 7, 8, 9, 10]
let solution = [0, 2]
let result = [];
for (let i=0; i<arr.length; i++) {
if (solution.indexOf(i) === -1) {
// indexOf는 앞,뒤 인덱스를 비교하며 같으면 1을, 다르면 -1을 반환한다.
result.push(arr[i])
}
}
console.log(result)
// [7, 9, 10]
if문과 같은 조건문이다.
else if 대신 사용할수 있으며, 가독성이 매우 뛰어나다.
let alphabetIndex = []
let arr = sliceFive1();
for (let i=0; i<arr.length; i++) {
let ind = arr[i]
console.log(ind)
for (let j=0; j<ind.length; j++) {
console.log(j)
let jnd = ind[j]
console.log('jnd = '+jnd)
// 1for문 한번 돌고 나온 ind에서
//
switch(jnd) { // 비교할 값을 jnd로 설정
case 'e': // 조건을 case로 여러개 설정할수 있는게 switch문의 장점이다
case 'z':
case 'd':
case 'v':
case 'n':
alphabetIndex.push(i)
break; // 수행 후 마지막 break를 통해 switch문을 빠져나온다.
}
}
}
console.log(alphabetIndex);