[개발일지 26일차] 객체, 배열, for문

MSJ·2022년 6월 9일
0

WEB

목록 보기
26/41
post-thumbnail

2022-06-09

배열

여러 자료들 묶어서 활용할 수 있는 자료들

const str = "안녕하세요" 
str.length
-> 5

.length: 글자 전체 길이를 알수있다. -1 를 붙여 사용한다.

length 표기는 글자 길이를 5라고 나타내지만,
컴퓨터 숫자는 0부터 시작하기 때문. 각 글자의 순서가 0 1 2 3 4 인 셈.

str[0] 으로 결과를 도출할 경우
->'안'
이라고 나오는 것이 그 의미.

요소. 엘리먼트 element

각 요소를 집어넣을 때 쉼표로 구분한다.

어떤 element들이 들어갈 수 있나?

const array1 = [273, "문자열", true, [27,35], {}, fun ()]

273 : 숫자열
"문자열" : 문자열
true : 참, 거짓
[27,35] : 배열 안의 배열.
{} : 중괄호도 들어갈 수 있음
fun() : 빈 것을 그냥 넣으면 에러가 나지만 내용을 지정을 해놨다면 에러가 안 남

array1[1] 
-> "문자열"

인덱스 안의 자료들은 연산도 가능하다.


배열 사용하기

콘솔창에서 실행해보자

1) 배열을 선언하고

const array1 = [273, "문자열", true, [27,35], {}]

2) 배열의 요소를 찾아내보고

array1[3]
->[27,35]

3) 배열에 요소를 넣을 수도 있다

array1.push('요소넣기')
-> 6

array1
-> (6)[273, "문자열", true, [27,35], {}, '요소넣기']

물론, 배열 사이에 끼워넣을 수도 있다.

array1.splice(2,0,'딸기') // 배열.splice(항목위치, 제거할 항목 수, 추가할 항목)
->[]

array1
(7) [273, '문자열', '딸기', true, Array(2), {…}, '요소넣기']

4) 배열의 요소를 제거할 수도 있다.

배열.splice (항목 위치, 제거할 항목 수)
보통 항목 위치에서부터 차례대로 삭제가 된다. 띄엄띄엄 삭제는 불가능.

array1.splive (2,1)
-> ['딸기']

array1
-> (6) [273, '문자열', true, Array(2), {…}, '요소넣기']

array1.splive (2) 와 같이 생략도 가능한데, 2번째 항목 이후의 모든 요소를 제거하겠다는 의미이다. 인덱스는 생략이 불가하고, 제거갯수는 생략이 가능.

array1.indexOf('어떤요소')
-> -1

-1의 의미는 배열에 해당 요소가 없다는 뜻이다.

for 문

for infor of : 배열에 자주 씀. 배열 요소를 가져오거나.
for : 범용적

기본적인 문장 구조는 이렇다.

for in (식별자 in 배열)
    for(const i in fsk){
    실행문장
    
//배열 개체(fsk)를 하나씩 빼서 넣는다 는 반복문

for in 문

for of 문

for 문

과제 해결

fsk=[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

1) 순서대로 출력해보기
2) 거꾸로 출력해보기
3) 짝수 번째 출력해보기

어려웠던 것

과제를 하는데 짝수 요소 출력에서 i++를 쓰자 무한 루프가 됨
분명 i<10;로 조건식을 주어졌는데 왜 그런걸까?

for(let i = 1; i < 10; i = i + 2) {
            console.log(`${i}번째 짝수 요소 ${fsk[i]}`)

        }

에서 for(let i = 1; i < 10; i + 2) 로 할 경우 콘솔이 감당안되게 1346298개 무한 출력됨; `

해결 방법

검색해보니 다른 사람들은 딱히 i+2와 i=i+2의 차이점에 대한 서술이 없다. 콘솔로그에 문제가 있을 수도 있으나, 굳이 i=i+2와 같은 식을 쓰는 이유는 버그를 잡기가 쉽고, 명확하기 때문이라 한다.

-> 강사님께 답변을 받았다 : i = i + 1i + 1의 차이
= 로 값을 대입시켜주지 않으면 구문 등 여러 오류가 날 수도 있으며, 대입 연산자를 써야 i에 값을 저장시켜주기 때문에 변경 값이 반영이 된다.

소감

과제 해결이 꽤 재밌던 듯 하다. 거꾸로 출력할때는 시작 요소를 끝에서부터 지정하여 점차 빼는 식으로 해결했다. 뭔가 별거아닌 식인데도 뿌듯했다.

다만 3번째는 도무지 이유를 모르겠다.

profile
제로부터 시작하는 프로그래밍&코딩

0개의 댓글