짝수만을 요소로 갖는 배열을 리턴해야 합니다.
입력으로는 number 타입을 요소로 갖는 배열, arr[i]는 양의 정수이고
출력은 배열을 리턴해 줘야 했다
function EvenNumbers(arr) {
let result = []
for(let n = 0; n < arr.length; n++) {
if(arr[n] % 2 === 0) {
result.push(arr[n])
}
}
return result
}
짝수를 리턴하는 문제를 풀때 위의 코드처럼
결과를 저장해줄 받을 배열을 만든 뒤
그 배열 안에 짝수인 숫자만 넣는 식으로 풀었었다
이번에 페어분과 함께 문제를 풀었을때 다른방식으로 풀어서
아 이렇게 문제를 풀 수도 있구나 다른풀이방식을 알게 되어서 좋았다
function EvenNumbers(arr) {
// 홀수
for(let n = 0; n < arr.length; n++) {
if(arr[n] % 2 !== 0) {
arr.splice(n, 1);
n--;
}
} return arr
}
배열 안에서 홀수인 숫자만 제거하는 방식으로 문제를 풀어보기로 했다
배열에서 특정 값만 삭제하는 방법을 검색 해봤더니
splice를 활용해서 삭제 할 수 있었다
이때 splice를 쓸때 주의해야 할 것은 원본 배열의 원소가 삭제되고
배열의 길이가 변하기 때문에 원소를 하나 삭제 한 뒤에는
배열의 index값을 참조하는 n의 값을 하나 감소(n--) 시켜 줘야 한다
splice
: 특정 index의 값 추가, 삭제unshift(), shift(), push(), pop()을 사용해서
앞과 뒤에 원소를 추가 삭제 할 수 있었고
splice를 사용하면 배열의 앞 뒤 중간에 원소를 추가 삭제 할 수 있다
array.splice(1,1,'a')
splice() 함수는 start, deleteCount, items원소 목록을 입력 받는다
start index부터 deleteCount만큼의 원소를 삭제하고,
items원소를 start index 위치에 추가한다
let arr = [3, 4, 5];
arr.splice(0, 0, 1, 2);
// [ 1, 2, 3, 4, 5]
// 앞쪽에 추가
let arr1 = [1, 2, 3];
arr1.splice(arr1.length, 0, '4', '5');
// [1, 2, 3, 4, 5]
// 뒤쪽에 추가
let arr2 = [1, 2, 3];
arr2.splice(1, 0, 10, 11);
// [1, 'a', 'b', 2, 3]
// 중간에 추가
let arr3 = [1, 2, 3];
arr3.splice(3, 0, 4)
// [1, 2, 3, 4]
// 삭제하지 않고 추가
//(추가하고싶은 값이 들어갈 인덱스, 삭제할원소 0, 추가할 값)
let arr1 = [ 10, 11, 5, 2, 3 ];
arr1.splice(0, 3);
// [2, 3]
// 앞에서 3개 원소 삭제
let arr2 = [1, 10, 11, 2, 3];
arr2.splice(1, 2);
// [1, 2, 3]
// index 1부터 중간 원소 2개 삭제
let arr3 = [1, 2, 3, '10'];
arr3.splice(arr3.length - 1, 1);
// 마지막 원소 삭제
index의 값을 삭제할때
(삭제할값의 시작index, 삭제할원소의 갯수)
추가할 값이없으니 3번째 파라미터는 지정하지 않아도 된다