[0, 1, 2, 3, 4].reduce(function(누적합, 현재값, 인덱스, 원본배열) {
return 누적합 + 현재값;
}); // {} 뒤에 시작값을 정할 수 있음
배열의 값 두 배 만들기
numbers.reduce( (a, c) => [...a, c*2], [])
문자열속에서 배열만 자연수만 찾아 더하기
let str = 'A1b2c3d4e5a6'
// 자연수기 떄문에 양수만 취급, 즉 +a, +c
[...str].reduce( (a, c) => +a + +c : a, 0) // 삼항연산자를 통하여 숫자는 더하고 문자는 그대로
split() -> 길이1짜리 배열로 다 넣기
split("") -> 인덱스 한 개 씩 String의 길이만큼의 배열 생성
String.split("")= [...test]
join() -> 컴마로 구분하여 'h, e, l, l, o'
join("") -> 배열요소들이 한 문자열로 'hello'
만약 문자열의 각각을 여러번 반복하고 싶다면
my_string.split("").reduce( (a, c) => a + c.repeat(n), "")
c는 배열에 담겨있는 각 문자하나씩이니까
.includes(찾을문자, 검색시작할곳)
"anc".includes("a", 2) // true
const str = 'dog dog my dog'
str.replaceAll("dog", "you") // you you my you
let arr = ["h", "e", "l", "l", "o"] // ["o", "l", "l", "e", "h"]
filter를 통한 모음제거
let str = 'aeiou'
Arr.filter( (v) => (!str.includes(v))).join("") // aeiou가 들어있지 않은 애들로만 모아주세요.
혹은 정규표현식을 사용해도 됨
my_string.replace(/[aeiou]/g, '');
각각 해당하는 애들만 다 ''로 바꿔줌
배열의 교집합
s1 ['a', 'b', 'c']
s2 ['a', 'b', 'c', 'd']
return s1.filter( v => s2.includes(v) )
맨 마지막 인덱스 잘라서 앞에다가 넣기
Arr.unshift(Arr.pop())
맨 처음인덱스 빼서 마지막에 넣기
Arr.push(Arr.shift())
해당하는 인덱스를 반환 (indexOf관련은 따로 정리 해둔 곳 있음)
문자를 아스키코드로 -> 숫자.charCodeAt()
아스키코드를 유니코드로 -> String.fromCharCode(v)
order = 29423
[...order+' '].filter( v => ['3', '6', '9'].includes(v))
깊은 복사 (Deep copy) : 메모리 값을 직접 수정하느냐
얕은 복사 (Swallow copy) : 메모리 값을 가리킬 뿐이냐
test = Arr.sort( (a, b) => a-b) (깊은 복사)
test = [...Arr].sort( (a, b) => a-b) (얕은 복사)
// 1. 정규표현식을 사용해서 my_string의 숫자 부분을 발라낸다.
// my_string이 "aAb1B2cC34oOp" 이라면 nums = [ '1', '2', '34' ]
const nums = my_string.match([0-9]+/g);
s = 'abcabcadc'
s.forEach((item) => {
// 앞에서 부터 찾은 값과 뒤에서 부터 찾은 값이 같다는 것은 배열에서 "한 번만" 등장한다는 것
if(s.indexOf(item) === s.lastIndexOf(item)){
// 결과로 반환할 배열에 넣어주기
return item
}
})
parseInt(이진수, 2)
십진수.toString(2)
[...new Set(Arr)]
let test = '10.12345';
parseInt(test); // 10
Number(test); // 10.12345
let test = '2020년도';
parseInt(test); // 2020
Number(test); // NaN
parseInt는 문자열로 된 부분에서 숫자만을 뽑아서 변환
Number는 문자열 전체가숫자일 때만 사용 가능
substr은 앞 인덱스부터 몇 개를 빼겠다는 것이고 substring은 앞부터 뒤 인덱스 -1까지 빼겠다는 것
str="abcdefg"
substring(2, 4) -> "cd"
substr(2, 4) -> "cdef"
every - 배열의 모든 요소가 콜백함수에서 true를 리턴해야 true를 리턴 하나라도 false가 떨어지면 false를 리턴
some - 배열의 요소 중 하나라도 콜백함수에서 ture를 리턴하면 treu를 리턴
// includes를 통해 매치되는 애가 없으면 배열에 아무것도 들어가지 않으니 길이를 통해 삼항연산자
return dic.filter( v => spell.every( c => v.includes(c) )).length ? 1 : 2
Map
new Map() – 맵을 만듭니다.
map.set(key, value) – key를 이용해 value를 저장합니다.
map.get(key) – key에 해당하는 값을 반환합니다. key가 존재하지 않으면 undefined를 반환합니다.
map.has(key) – key가 존재하면 true, 존재하지 않으면 false를 반환합니다.
map.delete(key) – key에 해당하는 값을 삭제합니다.
map.clear() – 맵 안의 모든 요소를 제거합니다.
map.size – 요소의 개수를 반환합니다.
내림차순으로 정렬하면 1등의 점수가 맨 앞으로서 인덱스가 0이 됨\
그 후 원본과 내림차순으로 정렬한 것을 비교하여 내림차순 정렬한 애의 인덱스에 +1씩을 해줌
// 1. score의 평균 점수를 구한다.
let avg = score.map(v=>(v[0]+v[1])/2);
// 2. avg를 내림차순으로 정렬한 배열 sort를 선언한다.
let sorted = avg.slice().sort((a,b)=> b-a);
// 3. avg의 요소와 동일한 sorted 배열의 index 값에 1을 더한다.
return avg.map(v => sorted.indexOf(v) + 1);
maxNum = 0;
for (let i = 1; i<= b; i++){
if(a%i ===0 && b%i ===0) {
maxNum = i;
}
}
Arr = [1, 2, 3, 4, 5, 6]
특정수 ex) 4와 가까운 수부터 큰 순으로 정렬
function solution(numlist, n) {
// 내림차순으로 먼저 정렬
// 그 후 각 값들에서 n을 빼준 값이 작은 순으로 다시 오름차순 정렬
return numlist.sort((a,b)=>b-a).sort((a,b)=>Math.abs(a-n)-Math.abs(b-n))
}