JavaScript 94

es6에서 순회, iterable: iterator protocol(기존과 달라진 es6에서의 list 순회)

함수형 프로그래밍에서 리스트 순회는 매우 중요하다. 실무적인 프로그래밍에서도 리스트 순회가 매우 중요하다. 자바스크립트가 es6이 되면서 리스트 순회에 많은 변화가 있었다.(언어적으로 큰 발전이 있는 부분이다.) 기존에 es5에서 리스트 순회는 아래와 같았다.(es5스럽게 코딩할려고 var를 씀) list라는 값에 length라는 프로퍼티에 의존해서 숫자라는 키로 순회하도록 i를 증가시켜주면서 list length만큼 숫자키로 접근해서 list안에 값을 순회하는 식으로 진행하였다. => 1 2 3 a b c es6이 되면서 순회하는 방법이 달라졌다. 문법을 보면 훨씬 간결해졌다. 선언적이고 어떻게 순회하는 지를 구체적으로(명령적으로) 기술하기 보다는 보다 쉽게 for of문을 통해서 list안에 있는 값..

함수형 자바스크립트 기본기(평가와 일급, 일급 함수, 고차 함수)

평가와 일급 평가란 코드가 계산되어 값을 만드는 것을 말한다. 즉 코드가 계산되어지는 것을 말한다. 아래 코드와 같이 코드가 각각 계산되어져서 만들어 졌다. (1+2)+4 7 3+4 7 [1, 2] (2) [1, 2]0: 11: 2length: 2[[Prototype]]: Array(0) [1, 5] (2) [1, 5] [1, 2 + 3] (2) [1, 5]0: 11: 5length: 2[[Prototype]]: Array(0) [1, 2, [3, 4]] (3) [1, 2, Array(2)]0: 11: 22: (2) [3, 4]length: 3[[Prototype]]: Array(0) [1, 2, ...[3, 4]] (4) [1, 2, 3, 4] 그리고 일급은 값으로 다룰 수 있다는 것이고 변수에 담을 ..

JS_Algorithm[인프런 - JS 알고리즘 문제풀이] array search algorithm1

주어진 숫자들 중에서 자신의 바로 앞 수 보다 큰 수를 출력하는 코드를 작성해보자. 참고: https://www.inflearn.com/course/%EC%9E%90%EB%B0%94%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8-%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98-%EB%AC%B8%EC%A0%9C%ED%92%80%EC%9D%B4/dashboard 자바스크립트 알고리즘 문제풀이(코딩테스트 대비) - 인프런 | 강의 자바스크립트(JavaScript)로 코딩테스트를 준비하시는 분을 위한 강좌입니다. 재미있게 풀 수 있는 기초 단계 문제부터 고급 알고리즘까지 단계별로 차근차근 배우도록 설계된 강좌입니다., 개발 www.inflearn.com

JS_Algorithm[인프런 - JS 알고리즘 문제풀이] basic question17

주어진 단어중에서 중복된 단어를 제거하는 코드를 작성해보자. 참고: https://www.inflearn.com/course/%EC%9E%90%EB%B0%94%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8-%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98-%EB%AC%B8%EC%A0%9C%ED%92%80%EC%9D%B4/dashboard 자바스크립트 알고리즘 문제풀이(코딩테스트 대비) - 인프런 | 강의 자바스크립트(JavaScript)로 코딩테스트를 준비하시는 분을 위한 강좌입니다. 재미있게 풀 수 있는 기초 단계 문제부터 고급 알고리즘까지 단계별로 차근차근 배우도록 설계된 강좌입니다., 개발 www.inflearn.com

JS_Algorithm[인프런 - JS 알고리즘 문제풀이] basic question14

중복되는 단어가 있는 경우 제거하는 코드를 작성해보자. 아래코드를 보자. let answer = ""; for (let i = 0; i < s.length; i++) { // console.log(s[i], i, s.indexOf(s[i])); if (s.indexOf(s[i]) === i) answer += s[i]; } 중복되는 k의 갯수를 출력하는 코드를 작성해보면 아래와 같다. function solution(s) { let answer = 0; let pos = s.indexOf('k'); while (pos !== -1) { answer++; pos = s.indexOf('k', pos + 1); } return answer; } console.log(solution("ksekkset")); ..

JS_Algorithm[인프런 - JS 알고리즘 문제풀이] basic question14

주어진 문자열 중에서 가장 긴 문자열을 출력한다. 코드를 작성해보자. function solution(s) { let answer, max = Number.MIN_SAFE_INTEGER; for (let x of s) { if (x.length > max) { // ?? max = x.length; answer = x; } } return answer; } let str = ["teacher", "time", "student", "beautiful", "good"]; console.log(solution(str)); 참고: https://www.inflearn.com/course/%EC%9E%90%EB%B0%94%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8-%EC%95%8C%EA%B3..

JS_AlgorithmJS_Algorithm[인프런 - JS 알고리즘 문제풀이] basic question15

문자열 중에서 가운데 문자열 하나만 출력해보자. 홀수인 경우에는 가운데 문자를 짝수배열인 경우에는 가운데 두문자를 출력한다. 아래코드를 보자. function solution(s) { let answer; let mid = Math.floor(s.length / 2) // if (s.length % 2 == 1) answer = s.substring(mid, mid + 1); // else answer = s.substring(mid - 1, mid + 1); if (s.length % 2 == 1) answer = s.substr(mid, 1); else answer = s.substr(mid - 1, 2); return answer; } console.log(solution("study")); 참고:..

JS_Algorithm[인프런 - JS 알고리즘 문제풀이] basic question13

대문자는 소문자로 소문자는 대문자로 변환해주는 코드를 작성해보자. function solution(s) { let answer = ""; for (let x of s) { if (x === x.toUpperCase()) answer += x.toLowerCase(); else answer += x.toUpperCase(); } return answer; } console.log(solution("StuDY")); 참고: https://www.inflearn.com/course/%EC%9E%90%EB%B0%94%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8-%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98-%EB%AC%B8%EC%A0%9C%ED%92%80%EC%9D%B4/..