Ch.Covelope

Javascript <자바스크립트> 연습 문제 풀이(split, array, for) 본문

JavaScript

Javascript <자바스크립트> 연습 문제 풀이(split, array, for)

Chrysans 2021. 12. 14. 21:32
728x90
반응형

 

 

 

Javascript <자바스크립트>  연습 문제 풀이(split, array, for)

 

 

 

split, array, for을 이용한 간단한 문제 풀이해보기. 

 

 

 


 

 

 

 

 

문자열을 split 로 하나씩 자르고 숫자로 더하고 평균 구하기.

let data = '5, 4, 10, 2, 5'.split(',')
//  '5, 4, 10, 2, 5' 는 하나의 문자열
// split 으로 문자열을 일정한 구분자로 잘라서 배열로 저장

let result =0;                                         // 결과값을 담을 변수 선언과 0 할당.
for (let i of data){                                 // 스플릿된 문자열을 for of 배열을 순환한다.
  result += parseInt(i)/data.length;   // 순환 되면서 정수로 반환한 값을 배열의 길이만큼 나누고 결과값에 더해진다.
}                                                              // 하지만 순환될때마다 나눠지기 때문에 효율이 떨어질수있다.
console.log(result);

------------------------------------------------------------------------------------

for (let i of data){
 통계 += parseInt(i);
}
console.log(통계/data.length);        // 나누기를 밖으로 빼면 좀더 효율적이다.

최종 결과값 - 26

 

split를 이용해서 문자열을 배열로 반환 후 for of에 넣고 parseInt로 형 변환 후 변수에 담아 숫자로 합계를 구한다.

 

 

 

 


 

 

다음 array의 각 자리수의 합 구하기. (replace, 정규식, join )

let data = [11, 22, 33, 111, 2];
data + '';                                                     // data의 배열을 스트링으로 만들어준다.
data = '11,22,33,111,2'.replace(/,/g,'');    //replace("찾을 문자열", "변경할 문자열") g는 정규표현식이다. 

01122331112                                           // replace 된 값
  
let result = 0;                                          // 결과를 담아줄 변수에 0을 할당
for (let i of data) {                                  //01122331112 이게 for 문으로 들어가면
  합계 += parseInt(i);                             // '0''2''3''4' 이런식으로 하나씩 순회 한다.
}                                                               // 순회한 값이 스트링이기 때문에 parseInt 로 형변환해서 숫자로 결과값에 더해준다.

console.log(result);                               // 결과값 17           

# data = data + '' ;
# data = data.replace(/,/g, '');
이렇게 사용하지 않고              
data = data.join('')                                 // join 을 사용하면 두가지 프로세스를 한번에 할수있다.

 

배열의 각 자리수의 합을 구하는 문제. 배열을 스트링으로 형 변환 후 컴마를 없애기 위해 replace를 한다. 그리고 1번 문제와 같이 for of와 parseInt를 사용해서 변수에 담고 결과 갑을 반환한다.

※ join 메소드를 사용하면 좀 더 간결하게 코드를 짤 수 있다.

 

 

 


 

 

 

Array 메서드 sort 사용해서 정렬하기 (Comparefunction)

let data = [10,20,30,1,2,25];

data.sort()                      // sort의 정렬은 "문자열"의 "유니코드" 코드 포인트를 다른다.
[1, 10, 2, 20, 25, 30]      // 그래서 우리가 생각하는 대로 정렬값이 나오지 않는다.

//비교 함수(compareFunction)

data.sort((a,b) => a-b);  오름차순

// [10, 20] 을 비교 함수에 "역순" 으로 전달한다.
// a = 20; b =10;
// return a-b; = return 20 - 10 ; = 10
// return 값이 양수이면 다음비교로 넘어가고 음수값이면 둘의 위치를 변경
// 반복해서 최종적으로 [1, 2, 10, 20, 25, 30] 을 반환한다.

data.sort((a,b) => b-a);  내림차순
// return 하는 a 와 b 의 값을 바꾸면 내림차순이 된다.

sort는 사전적 정렬을 사용하고 있어서 어떤 값에 따라서 원하지 않는 정렬을 반환할 수 있다. 그래서 필요한 게 비교 함수를 사용해서 원하는 정렬 값을 반환하는 연습을 했다.

(참고) sort는 새로운 배열을 반환하는게 아니라 원본 배열이 수정된다 .

 

 

 


 

 

 

https://github.com/chry8822

 

chry8822 - Overview

‘Keep true to the dreams of thy youth’ . chry8822 has 13 repositories available. Follow their code on GitHub.

github.com

 

 

 


 

728x90
반응형
Comments