// forEach -> 이해못함
const array1 = ['a', 'b', 'c'];
console.log(array1);
array1.forEach(element => console.log(element));
//어떤 개념인지 이해가 안됨...
막막하게 이해가 안되는 부분이였다. 제일 마지막줄의 등호가 왜 있어야 하며 왜 > 기호는 안되는지
설명이 안됫다. 그래서 이해하는건 포기. 학원가서 물어봐야겠다.
.
.
- 기본적으로 내장함수이다
-- 배열 = 원하는 특정 배열값의 존재여부 등.
--문자열 = 원하는 문자열을 검색하여 찾는다.
var testIndex = 'abcdef'
console.log(testIndex.indexOf('ab')); // 0
console.log(testIndex.indexOf('cd')); // 2
console.log(testIndex.indexOf('ed')); // -1
console.log(testIndex.indexOf('ad')); // -1
console.log(testIndex.indexOf('ff')); // -1
.
.
- 배열에 모든 요소를 연결해 하나의 문자열을 만든다.
var hello = ['yang', 'hyun', 'jun'] ;
console.log(hello.join("")); // yanghyunjun
console.log(hello.join('-')); // yang-hyun-jun
console.log(hello.join('ll')); // yangllhyunlljun
.
.
.
.
- 배열의 마지막 요소를 제거하고, 그 요소를 반환함.
-- 원본에 영향을 준다. 그리고 다시 강조!!!! 제거한 요소를 반환한다.
var poppin = ['hyun', 'jun','yang'];
console.log(poppin.pop());
console.log(poppin); // 'yang' 이 제거된 모습 확인 가능.
.
.
- 배열 끝에 하나 이상의 요소를 추가하고, 배열의 새로운 길이를 반환한다.
-- 원본 배열에 영향을 주며, 마지막 배열에 요소를 추가한다.
--- 반환값은 lenght 로 값을 준다.
var pushPush = ['babe', 'push', 'baby', 'maku'];
console.log(pushPush.push('big')); // 5 -> pushPush의 원래 lenght는 4였으나 big이 추가되어 5가 됨.
var 구기종목 = ['축구', '농구', '야구'];
var 새로운종목 = 구기종목.push('럭비', '수영');
console.log(구기종목); // Array(5) 위와 같은 내용.
console.log(새로운종목); // 5 위와 같은 내용.
- 원본 배열의 순서를 반전하고, 그 값을 반환한다.
var nums = ['one', 'two', 'three', 'four']
console.log('check:', nums); // ['one', 'two', 'three', 'four']
nums.reverse();
console.log(nums); // ['four', 'three', 'two', 'one']
var allNums = nums.reverse();
console.log('reverse:', allNums); // ['one', 'two', 'three', 'four']
첫번째 콘솔이 원본의 nums 이다.
두번째 콘솔은 nums의 reverse를 주었고,
리버스된 nums을 다시 리버스하면서 allNums로 변수명을 지정해주었고,
마지막 콘솔은 원본 nums 와 같은 결과값을 받았다.
.
.
- 배열의 첫번재 요소를 제거하고 제거된 요소를 반환한다.
-- 원본 배열의 길이를 변하게 한다. (빈 문자열은 'undefined' 를 반환한다.
var array3 = ['하나' , '둘', '셋', '넷']
var arrayShift = array3.shift();
console.log(array3); // ['하나', '둘', '셋', '넷']
console.log(arrayShift); // 하나
console.log(typeof(arrayShift)); // string -> 만약 하나 의 자리가 빈 문자열로 바꾸면 undefined로 값이 나온다.
shift() 자체는 이해했으나, 예시중 while 문에 사용하는게 있었다.
막혔던 부분은 ! === undefined 에서 이해가 안되서 넘어갈 수가 없었다.
.
.
- 어떤 배열의 begin ~ end 까지 ( end 값은 제외)에 대한 얇은 복사본을 새로운 배열로 반환해 준다.
( 얇은 복사본 이게 이해가 안됨. 아마 해석하면서 난 오류라고 생각됨. )
-- 원본 배열은 변하지 않고 새로운 배열로 반환해준다.
--- 기억하자!!! end 요소는 포함되지 않고!!! 새로운 배열로 반환해 준다.
var oneSlice = ['하나', '둘', '셋', '넷', '다섯']
console.log(oneSlice.slice(3)); //3번째 원소부터 새로운 배열을 생성해 반환해줌 -> 넷, 다섯
console.log(oneSlice.slice(1,4)); // 1번째 원소부터 3번재 원소까지 새로운 배열을 생성해 번환해줌.(4번은 포함안됨) -> 둘, 셋, 넷
console.log(oneSlice.slice(-4)); // -는 뒤에서 부터 카운팅 되어서 반환해줌. -> 둘, 셋, 넷, 다섯
console.log(oneSlice.slice(7,4)); //begin 부분이 배열보다 큰 경우 빈 문자열을 반환함. -> [] = 빈 문자열
console.log(oneSlice.slice(1,-1)); // 두번째 원소부터 뒤에서 두번재 원소까지 반환함. ( begin= '둘' -1=다섯, end 부분이라 제외) -> 둘, 셋, 넷
'하나' = 0 , '둘' = 1 ... 이다 헷갈리지 말자.
.
.
- 배열의 요소를 적절한 위치에 정렬 후 그 배열을 반환한다.
-- 기본정렬 순서는 문자열의 유니코드 코드 포인트를 따른다.
var korean = ['하', '다', '차', '마', '가', '파'];
korean.sort(); // 유니코드 코드를 기반으로 정리를 해줌.
console.log(korean); //원본의 배열을 정리해준다. -> ['가', '다', '마', '차', '파', '하']
var numbers = [1, 7, 300, 90000, 10000000000, 20000];
numbers.sort(); // 문자열 유니코드 코드를 기반으로 하기때문에 숫자의 크기보단 앞열의 숫자에 정렬을 둔 모습.
console.log(numbers); //원본의 배열을 정리해준다. -> [1, 10000000000, 20000, 300, 7, 90000]
문자의 경우 이해하기가 쉽지만, 숫자의 경우 숫자가 큰 순서가 아닌, 유니코드 기반으로 정렬을 해주고, 복잡한 정렬일수록 정렬법이 달라질 수가 있다. <- 변수가 많음.
.
.
- 새로운 요소를 배열의 맨 앞쪽에 추가하고, 새로운 길이를 반환한다.
var names = ['yang', 'hyun', 'jun', 'park', 'kim', 'jae', 'maan'];
console.log(names.length); // -> 7
console.log(names.unshift('what','is')); //1. 새로운 요소를 추가 2. 반환되는 값은 길이 값이다. -> 9
console.log(names); // 반환된 요소를 확인해 보면 앞에 2개의 요소가 추가되어 반환된것을 확인 할 수 있다.
-> ['what', 'is', 'yang', 'hyun', 'jun', 'park', 'kim', 'jae', 'maan']
첫번재 콘솔의 값은 7, unshift 를 사용한 값은 9 ( 2개의 값을 추가함)
원본 배열의 영향을 주는걸 확인 할 수 있고, 앞에 추가가 된다는것도 알수 있었다.
.
.
.
.
.
.
재현쌤 자료를 기반으로 자주 사용하는 메서드 들을 찾아보고 사용해 보았다.
막상 사용하면 알것 같은데 과연 이 메서드들로 어떤 복잡한 식을 풀어갈지 조금은 막막하다
내일부터는 1만시간의 법칙 코드리뷰를 받은걸 바탕으로 다시 작업을 해볼 생각이다.
꾸준히 하자. 화이팅!!!