slice메서드
에 대해서 다시 한 번 복습을 했다.
- 배열의 일부만 가져올 때 사용한다.
arr.slice(start, end)
매개변수 두개를 받는데 start값은 어디서부터 가져올지를 의미하고 end값은 어디까지 가져올지를 의미하는데 , 입력받은 값의 바로 앞의 인덱스까지 가져온다.- 만약에 end값을 생략하게되면 배열의 마지막까지 반환한다.
음수를 사용하면 배열의 끝에서부터 요소를 샌다고하는데 좀 어렵다.. 근데 두번째 값에 -1을 넣는게 length -1 로해도 같은 의미이던데 좀 헷갈리기도 했다.
배열의 첫번째 요소
그리고 배열의 마지막요소
를 의미하는 것이 무엇인지에 대해서 다시 익혔다.
- 배열의 첫번째 요소 :
인덱스가 0인 요소
- 배열의 마지막 요소 :
arr.length -1 인 요소
이다.
push 와 pop은
각각 배열의 끝에 요소를 추가하거나 제거하고
shift 와 unshift는
각각 배열의 처음에 요소를 추가하거나 제거한다.
근데push와 unshift는
새로운 요소를 추가해서 늘어난 길이를 반환하는데,
pop과 shift는
제거된 요소를 반환한다.
배열의 끝에 여러요소를 추가한 사본을 반환한다. concat 배열을 넘기면 이 메서드는 배열을 분해해서 원래 배열에 추가한 사본을 반환한다.
친구에게 코플릿 문제를 풀다가 질문을 했었는데 , 먼저 걸러내야할 문제를 코드로 작성해서 가려내는 게 낫다고 피드백을 해줬다.
예를 들어
//1. 입력받은 객체의 키 값을 할당해준 변수를 선언한다.
//2. 만약 입력 받은 객체의 키 값이 배열이 아니라면 또는 입력받은 배열의 길이가 0이라면(빈 배열이라면)
//3. 빈 배열을 리턴한다.
//4. 그렇지 않으면 마지막 요소가 제거된 새로운 배열을 리턴한다.
function blahBlah(obj, key)
let obj2 = obj[key]
if(!Array.isArray(obj2 || obj2.length === 0){
return [];
}
return obj2.slice(0, obj.length -1);
}
이렇게 먼저 걸러내야 할 것들을 걸러내고
else if
로 하게되면 무조건 원하는 조건일 때로 할 수 있어서 좀 더 편하게? 코드를 작성할 수 있는 것 같다. 먼저 원하는 조건을 쓰고 그 조건이 아니면 빈 배열을 리턴한다는지 하게 되면 좀 더 코드가 길어지는 것 같다.
코플릿을 풀면서
arr[arr.length -1]['name']
이 이해가 되질 않았었다. 근데 arr[값]이 들어오면 index값을 받는거여서몇번째 인덱스 안에 name이라는 키이름의 값을 리턴한다
라고 이해를 하였다.