section1 - unit8_배열, 객체 종합퀴즈

전형호·2023년 1월 2일

✅1.다음 코드에 대한 설명으로 옳지 않은 것을 모두 고르세요.(정답 2개) 답:C,D

•A.배열의 길이는 pokemon.length 로 알 수 있고, 길이는 5이다.

•B.pokemon.pop()으로 배열의 요소 중 마지막 요소인 ‘아구몬’을 제거할 수 있다.

•C.typeof pokemon의 결과는 array이다.

•D.pokemon.splice(5, 1, '이브이')를 입력하면 ‘아구몬'이 제거 되고 그 자리에 ‘이브이'가 추가된다.

🔊해설:

C. typeof pokemon의 결과는 object

•D. splice메서드는 순서대로 (제거할 요소의 인덱스, 몇 번째 요소까지, 제거한 후 대신 추가할 요소)를 전달할 수 있음. 보기 D의 경우 5번째 요소부터 1번째 요소까지 제거한 후, 이브이요소를 추가. 그러나 원본 배열 pokemon에 5번째 요소는 없기 때문에(undefined), 5번째 요소로 이브이'가 추가

✅2.배열이 빈 배열인지 확인하는 방법으로 알맞은 것을 고르세요.

답: B

•A.arr === []

•B.arr.length === 0

•C.arr = []

•D.Array.isArray(arr) === 0

🔊해설:

•A: [] === []은 false 라는 것에 대해서 이해할 수 있어야 틀린 이유를 알 수 있음 자바스크립트 상에서는 두 배열을 "주소가 다른 두 개의 빈 배열"이라고 생각하기 때문

•C: =는 값을 할당하는 기호. 즉, 변수 arr에 []을 재할당하는 코드.

•D: Array.isArray()는 전달인자의 타입이 배열인지 체크해서 boolean값을 리턴하는 메서드, 배열인지 여부를 확인할 수 있으나, 빈 배열인지 확인하는 방법으로는 적절하지 않음

✅3.kimcoding의 전화번호를 배열의 형태로 만들기 위한 방법으로 옳은 것을 고르세요. 답: C

•A.let codingArr = kimcoding.split(" - ")

•B.let codingArr = kimcoding.split(" ")

•C.let codingArr = kimcoding.split("-")

•D.let codingArr = kimcoding.splice(" ")

🔊해설:

•split 메서드는 전달인자로 들어가는 string을 기준으로 끊어 배열에 담아주고 그 배열을 리턴하는 메서드 , 문자열 kimcoding은 '-' 를 기준으로 숫자를 나눌 수 있음

✅4.배열(arr)과 요소(element)를 입력받아 주어진 요소를 배열의 맨 앞에 추가하고 해당 배열을 리턴하는 함수 addToFront()의 코드로 옳은 것을 고르세요. 답:D

•A.function addToFront(arr, element) {
return arr.unshift(element);
}

•B.function addToFront(arr, element) {
arr.shift(element);
return arr;
}

•C.function addToFront(arr, element) {
arr.pop(element);
return arr;
}

•D.function addToFront(arr, element) {
arr.unshift(element);
return arr;
}

🔊해설:

•**A. unshift메서드는 배열의 가장 앞 요소를 추가한 후, 배열의 length를 리턴합니다. 따라서 addToFront함수의 결과도 배열의 length입니다. 문제의 예시의 경우 3이 출력.

•B. shift메서드는 배열의 첫 번째 요소를 제거한 후, 첫 번째 요소를 리턴합니다. 또한 shift메서드는 전달인자를 필요로 하지 않음.

•C. pop메서드는 배열의 마지막 요소를 제거한 후 마지막 요소를 리턴.

✅5.배열(array)과 인덱스(n)를 입력받아 주어진 인덱스 이전의 요소들을 갖는 새로운 배열을 리턴하는 함수 getElementsUpTo()로 옳은 것을 고르세요. (정답 2개) 답: A,C

•A.function getElementsUpTo(array, n) {
return array.slice(0, n);
}

•B.function getElementsUpTo(array, n) {
array.slice(0, n);
return array;
}

•C.function getElementsUpTo(array, n) {
let result = array.slice()
return result.slice(0, n)
}

•D.function getElementsUpTo(array, n) {
let result = array.slice()
return result

🔊해설:

•B. slice메서드를 사용해도 원본 배열은 변하지 않기 때문에 원본 배열 array를 그대로 리턴

•D. slice메서드를 사용하여 원본 배열을 복사한 후 그대로 리턴하고 있습니다. 원본 배열을 그대로 리턴

✅6.숫자를 요소로 하는 배열을 입력 받아 가장 큰 요소를 받아 가장 큰 리터 하는 함수를 getGreatestElement()의 의사코드로 바르게 작성된 것을 고르세요. 답:B

•A.
function getGreatestElement(arr) {
변수 greatest를 선언하고, 0을 할당한다.
0번째 요소와 1번째 요소를 비교해서, 큰 값을 변수 greatest에 할당한다.
1번째 요소와 2번째 요소를 비교해서, 큰 값을 변수 greatest에 할당한다.
변수 greatest를 리턴한다.
}

•B.
function getGreatestElement(arr) {
변수 greatest를 선언하고, 0번째 요소를 할당한다.
1번째 요소부터, 가장 마지막 요소까지 순회하는 반복문을 만든다.
만약, arr[i]가 greatest보다 크면, 변수 greatest에 arr[i]의 값을 할당한다.
그렇지 않으면, 아무런 동작도 하지 않는다.
반복문이 끝나면 변수 greatest를 리턴한다.
}

•C.
function getGreatestElement(arr) {
변수 greatest를 선언하고, 0을 할당한다.
0번째 요소부터, 가장 마지막 요소까지 순회하는 반복문을 만든다.
만약, arr[i]가 greatest보다 크면, 변수 greatest에 arr[i]의 값을 할당한다.
그렇지 않으면, 아무런 동작도 하지 않는다.
반복문이 끝나면 변수 greatest를 리턴한다.
}

•D.
function getGreatestElement(arr) {
변수 greatest를 선언한다.
0번째 요소부터, 가장 마지막 요소까지 순회하는 반복문을 만든다.
arr[i]와 다음 요소를 비교하여 큰 수를 greatest에 할당한다.
반복문이 끝나면 변수 greatest를 리턴한다.
}

🔊해설:

✅7.다음 코드의 결과로 옳은 것을 고르세요. 답:B

•A.{
name: '불고기피자',
topping: '치즈',
price: 7900,
quantity: 2
}

•B.{
name: '치즈피자',
topping: '치즈',
dough: '치즈크러스트'
price: 7900
}

•C.{
name: '치즈피자',
topping: '불고기',
dough: '치즈크러스트'
price: 8900,
}

•D.{
name: '치즈피자',
topping: '치즈',
dough: '치즈크러스트'
price: 7900,
quantity: 2
}

🔊해설:

1. order['name'] = '치즈피자'; // name 속성이 이미 있기 때문에 name의 값을 '치즈피자'로 변경
_2. order.topping = '치즈'; // topping 속성이 이미 있기 때문에 topping의 값을 '치즈'로 변경
3. order.price = 7900; // price 속성은 없기 때문에 새로 생성한 후 값으로 7900 추가**
4. delete order.quantity // quantity 속성 삭제_**

✅8.객체(obj)와 키(property), 값(value)을 입력받아 키에 값을 할당하는 함수 addPropertyAndValue()로 옳은 것을 고르세요.

답: B

•A.function addPropertyAndValue(obj, property, value) {
obj['property'] = value;}
•B.
function addPropertyAndValue(obj, property, value) {
obj[property] = value;}

•C.
function addPropertyAndValue(obj, property, value) {
obj.property = value;}

•D.
function addPropertyAndValue(obj, property, value) {
obj.'property' = value;}

🔊해설:

**•A. obj['property'] = value;'property'는 변수 property 가 아니라 문자열 'property' , 그래서 obj에 'property'라는 key를 만들어주고 value 값을 담게 됨

•C. 보기 A과 마찬가지로 property라는 key를 만들어주고 그 key에 value를 담아줌

•D. 틀린 문법**

✅9.다음 중 객체의 모든 key를 콘솔에 출력하기 위한 방법으로 옳은 것을 고르세요. 답: A

•A.function allKeys(obj) {
for (let key in obj) {
console.log(key)
}
}

•B.function allKeys(obj) {
for (let key of obj) {
console.log(key)
}
}

•C.function allKeys(obj) {
for (let key = 0; key < obj.length; key++) {
console.log(key)
}
}

•D.function allKeys(obj) {
for (let key = 0; key <= obj.length; key++) {
console.log(key)
}
}

🔊해설:

**텍스트배열과 객체의 가장 큰 차이점은 순서 정보의 유무, 배열은 요소에 0부터 순차적으로 접근할 수 있지만 객체는 속성에 순서대로 접근하지 않고,key를 통해서 value에 접근.

✅10.두 개의 객체를 입력받아 두 번째 객체(obj2)의 속성들을 첫 번째 객체(obj1)에 추가하는 함수 extend()로 옳은 것을 고르세요. 답: C

•A.function extend(obj1, obj2) {
for (let key in obj2) {
obj1[key] = obj2[key];
}
}

•B.function extend(obj1, obj2) {
for (let key of obj2) {
if (!(key in obj1)) {
obj1[key] = obj2[key];
}
}
}

•C.function extend(obj1, obj2) {
for (let key in obj2) {
if (!(key in obj1)) {
obj1[key] = obj2[key];
}
}
}

•D.function extend(obj1, obj2) {
for (let key in obj1) {
if (!(key in obj2)) {
obj2[key] = obj1[key];
}
}
}

🔊해설:

**•A. obj1과 obj2에 중복으로 있는 key에 해당하는 값까지 모두 변경합

•B. for ~ of문 는 string, array, 유사배열 등에만 사용, 객체에는 사용되지 않음.

D. obj1의 속성을 obj2에 추가하는 코드

profile
코드스테이츠 블로그

0개의 댓글