[TIL] JavaScript 중간 평가 개념 정리

wecode 2주 회고

위코드 2주차의 마지막 날, javascript 중간 평가를 했다.

중간평가 3번까지는 무난하게 풀었지만 4번부터는 인터넷 검색이 없이는 풀지 못했다.
4번은 특히 indexOf를 쓰지 말고 풀라고 해서... 당황...
반복문과 조건문을 막 써봤는데 안나와서 메소드를 엄청 찾기 시작했다.

4번과 5번을 풀면서 느낀점은 내가 아직 string이나 array의 메소드를 잘 활용하지 못한다는 것이다.

2주 학습동안 부족하다고 느낀 논리구조력과 메소드 등 기본개념을 주말동안 보완할 예정이다.

중간 평가 개념 정리

4. getFind 함수 작성

문제: getFind 함수를 작성하세요.
문자와 문자열이 주어졌을때, getFind 함수는 주어진 문자열에서 주어진 문자가 나타나는 첫번째 위치를 반환합니다.
Notes: 문자열의 첫번째 문자는 인덱스 값 0 을 가집니다. 만약 문자열에 해당 문자가 여러번 나타나면, 첫번째로 나타나는 위치를 반환해야 합니다. 만약 문자가 문자열에 존재하지 않는다면, -1 을 반환해야 합니다.
중요!! indexOf 함수를 사용하지 마세요.

// 원하는 결과값
const output = getFind('a', 'I am a hacker')
console.log(output) // --> 2

1) for 문과 str[i] 사용 > 실패

	function getFind(filter, sentence) {
    	for(let i = 0; i < sentence.length; i++) {
        	if(filter === sentence[i]) {
            	return sentence[i].length 
            } else {
            	return -1
            }
	}    

실패 이유)
1. string.length의 결과값에 대한 개념 부족

sentence[i].length의 return값이 1이 나온다. 이 이유는 string의 정적속성이 string.length를 1로 내보내기 때문이다.

  1. 결과 값이 계속 -1이 나옴

2) 메소드로 해결

사용한 메소드

  • str.includes
  • str.search
  1. str.includes(searchString [, position]) : 문자열 내에 찾고자 하는 다른 문자열이 있는지 확인할 수 있다.
  • searchString : 이 문자열에서 찾을 다른 문자열
  • [, position] : searchString을 찾기 시작할 위치(인덱스), 기본값 0
  • 반환값: 문자열을 찾으면 true, 실패하면 false

=> 문제 해결: 값이 있는 지 확인

  1. str.search(regexp) : 정규 표현식과 이 string 객체간에 같은 것을 찾기 위한 검색 실행
  • 반환값: 정규표현식과 주어진 스트링간에 첫번째로 매치되는 것의 인덱스를 반환한다. 찾지 못하면 -1를 반환한다.

=> 문자열의 위치(인덱스) 반환

문제 해결 함수

function getFind(filter, sentence) {
	// 해당 문장이 있는 지 확인는 메소드를 변수에 할당
    let includedSentence = sentence.includes(filter);
    // 조건문: 만약 변수의 값이 true라면(해당 문장이 있다면)
    if(includeSentence === true)  {
    // 해당 문자가 있는 인덱스를 반환한다. 
    	return sentence.search(filter);
    } else {
    	return -1;
    }

}

5. find_longest_word 함수

문제: find_longest_word 함수를 만들어 주세요.
주어진 리스트안에 있는 단어중 가장 긴 단어를 찾을수 있도록 함수를 완성해주세요.

//원하는 결과값
console.log(find_longest_word(["PHP", "Exercises", "Backend"])) 
// --> "Exercises"

1) 반복문과 math.max를 사용해 단어중 가장 긴 값의 길이까지는 구현 성공

function find_longest_word(arr) {
	for(let i = 0 ; i <arr.length ; i++) {
    let longestWord = Math.max(arr.length) 
    }
}

console.log(find_longest_word(["PHP", "Exercises", "Backend"]))// return:8 

문제 상황 직면: 가장 긴 문자의 길이는 구했는데..그 긴 문자를 반환하는데 어려움을 겪었다.

2) 반복문과 최대 길이를 구하는 내용을 변수에 선언하고, 긴 문자 반환은 arr.indexOf() 메소드를 사용하여 해결

사용한 메소드

  • arr.map
  • Math.max(...arr) : 함수
  • arr.indexOf()
  1. arr.map(callback(currentValue[, index[, array]])[, thisArg])
    : 배열 내의 모든 요소 각각에 대하여 주어진 함수를 호출한 결과를 모아 새로운 배열을 반환
  • 매개변수
  • callback: 새로운 배열 요소를 생성하는 함수. 다음 세 가지 인수를 가집니다.
  • currentValue: 처리할 현재 요소
  • index(Optional): 처리할 현재 요소의 인덱스
  • array(Optional): map()을 호출할 배열
  • thisArg(Optional): callback을 실행할 때 this 로 사용되는 값.
  • 반환값: 배열의 각 요소에 대해 실행한 callback의 결과를 모은 새로운 배열

2.Math.max()함수
입력값으로 받은 0개 이상의 숫자 중 가장 큰 숫자를 반환

console.log(Math.max(1,2,3)); // return 3
const array1 = [1,3,2]
console.log(Math.max(...array1)) // return 3
  1. Array.indexOf(searchElement[,fromIndex])
    : 배열에서 지정된 요소를 찾을 수 있는 첫 번째 인덱스를 반환하고 존재하지 않으면 -1을 반환
  • 매개변수
  • searchElement: 배열에서 찾을 요소
  • fromIndex(Optional) : 검색을 시작할 색인. 인덱스가 배열의 길이보다 크거나 같은 경우 -1이 반환
  • 반환값: 배열 내의 요소의 최초의 인덱스. 발견되지 않으면 -1.

문제 해결 함수

function find_longest_word(arr) {
  //arrLength라는 변수에 배열의 길이를 담는다. 
  let arrLength = arr.map( x => x.length);
  console.log(arrLength); //[3,9,7]
  // 이 중 최대의 길이를 longestWord에 담는다.
  let longestWord = Math.max(...arrLength);
  console.log(longestWord); // 8
  //arrlength 중에 최대의 길이를 가진 값의 인덱스를 foundLongestword에 담는다. 
  let foundLongestword = arrLength.indexOf(longestWord);
  console.log(foundLongestword)


  return arr[foundLongestword];
}

좋은 웹페이지 즐겨찾기