https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/Reduce

Built-in higher order functions
let arr = [1, 2, 3];
// 배열의 filter 메소드는 함수를 인자로 받는 고차 함수입니다.
// arr.filter를 실행하면 내부적으로 arr에 접근할 수 있다고 생각해도 됩니다.
arr.filter = function (arr, func) {
const newArr = [];
for (let i = 0; i < arr.length; i++) {
// filter에 인자로 전달된 콜백 함수는 arr의 각 요소를 전달받아 호출됩니다.
// 콜백 함수가 true를 리턴하는 경우에만 새로운 배열에 추가됩니다.
if (func(arr[i]) === true) {
newArr.push(this[i]);
}
}
// 콜백 함수의 결과가 true인 요소들만 저장된 배열을 리턴합니다.
return newArr;
};
Array.prototype.filter = function(func) {
const arr = this;
const newArr = []
for(let i = 0; i < arr.length; i++) {
if (func(arr[i]) === true) {
newArr.push(this[i])
}
}
return newArr;
}
``
14_getElementsLessThan100AtProperty
객체와 키를 입력받아 키에 해당하는 값이 배열인 경우, 100 보다 작은 요소들만 갖는 배열을 리턴해야 합니다.
객체 복습
15_select
function select(arr, obj) {
// 배열의 각 요소들을 객체의 키로 했을 때 그 값을 추출하여 만든 새로운 객체를 리턴해야합니다.
// key 추출하고 새로운 객체를 리턴해야합니다. arr과 obj가 있는데 obj를 리턴하고 <-arr에 값이 있으면
// 객체의 선언 let obj = {};
let newObj = {};
for (let el in obj) { /// Obj의 key
for (let index of arr){ /// let of 는 공부를 한다. 배열의 요소
if (el === index) { //// 객체 [] = abc
newObj[el] = obj[el] /// el : key obj[el] = value; // 새로운 객체에 추가를 해주면 된다.
}
}
}
return newObj;
}
01_transformFirstAndLast
배열을 입력받아 차례대로 배열의 첫 요소와 마지막 요소를 키와 값으로 하는 객체를 리턴해야 합니다.
function transformFirstAndLast(arr) {
// TODO;
// 1. 새로운 obj를 설정해준다.
// 2. 조건을 만들어준다. arr[0] => key
// arr[arr.length-1] => value
if(arr.length ===0) {
return {};
}
let newObj = {};
newObj[arr[0]] = arr[arr.length-1]; ///key : value;
return newObj;
}
02_computeWhenDouble
연이율을 입력받아 원금이 2배 이상이 될 때까지 걸리는 시간(년)을 리턴해야 합니다.
TODO:
원금이 1 이 있다.
이자는 원금 * 연이율 1* interestRate/100
원금 + 이자 가 원금의 2배인가?
맞다 시간을 리턴
아니다 1년의 이자를 더해준다.
곱해준다.
function computeWhenDouble(interestRate) {
// 원금이 1 이 있다.
// 이자는 원금 * 연이율 1* interestRate/100
// 원금 + 이자 가 원금의 2배인가?
// 맞다 시간을 리턴
// 아니다 1년의 이자를 더해준다.
let principal =1;
let interest = 1+interestRate/100
let year = 0
while (principal <2) {
principal = principal*interest
year++
}
// for(let i =0 ; i < )// for문은 제가 생각해보기.. 정해진 시간..
return year
}
03_powerOfTwo
수를 입력받아 2의 거듭제곱인지 여부를 리턴해야 합니다.
TODO:
function powerOfTwo(num) {
///수를 입력받았다.
// while 로 풀어야 되는데
// pow를 정의를 해줘야한다.?
// num가 왔는데 2로 나누었을때 나머지가 0인지
//
if (num === 1) {
return true;
}
if (num %2 !==0) {
return false;
}
let pow = 2
while (pow < num) {
pow = pow*2
} ---> while을 통해서 반복되고 num보다 작을때까지 계속 반복
return pow === num --> 리턴을 밖에다가 해주었다
}
04_firstCharacter
문자열을 입력받아 문자열을 구성하는 각 단어의 첫 글자로 이루어진 문자열을 리턴해야 합니다.
function firstCharacter(str) {
TODO: 여기에 코드를 작성합니다.
새로운 스트링을 만든다.
for문을 통해서 앞글자만 따온다.
firstStr이라는 곳에 concat한다.
return
if (str.length ===0) {
return '';
}
let newStr =str.split(' ');
let firstStr=''
for (let i=0; i <newStr.length; i++) {
firstStr += newStr[i][0]
}
return firstStr;
}
05_firstReverse
문자열을 입력받아 순서가 뒤집힌 문자열을 리턴해야 합니다.
TODO: newStr을 정의해주고
for 문을 돌려서 문자열의 순서를 바꿔줘
return
function firstReverse(str) {
let newStr=''
for(let i =str.length-1; i>=0; i=i-1) {
newStr = newStr + str[i]
}
for(let i =0; i < str.length;i++) {
newStr = newStr +str[str.length-1-i]
} ///
return newStr;
}
06_letterCapitalize
문자열을 입력받아 문자열을 구성하는 각 단어의 첫 글자가 대문자인 문자열을 리턴해야 합니다.
function letterCapitalize(str) {
let strArr = str.split(' ');
let newArr=[]
for(let i =0; i<strArr.length ; i++) {
let head = strArr[i][0].toUpperCase();
let tail = strArr[i].slice(1)
newArr[i] = head + tail;
}
return newArr.join(' ');
}
이렇게 하니
let output1 = letterCapitalize('hello world');
console.log(output1); // "Hello World"
가 "HelloWorld"가 나왔다.
function letterCapitalize(str) {
// TODO: 여기에 코드를 작성합니다.
let strArr = str.split(" ");
let newArr = [];
for(let i = 0 ; i < strArr.length ; i++ ){
let FirstLetter = strArr[i].charAt(0).toUpperCase();
let leftOver = strArr[i].slice(1);
newArr[i] = FirstLetter + leftOver;
}
return newArr.join(' ')
}
charAt(0) mdn
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/String/charAt