본문 바로가기
알고리즘

[알고리즘] 자바스크립트 배열 함수, 내장 함수 등 모음

by junvely 2023. 2. 20.

- 자바스크립트 Reference: 자바스크립트에 내부에 포함되어있는 Object들을 카테고리 별로 확인 가능하다.  : https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference

 

JavaScript reference - JavaScript | MDN

The JavaScript reference serves as a repository of facts about the JavaScript language. The entire language is described here in detail. As you write JavaScript code, you'll refer to these pages often (thus the title "JavaScript reference").

developer.mozilla.org

 

배열 함수

.find() => 배열 중에서 조건에 부합하는 첫 번째 요소 반환

.filter() => 배열 중 조건에 부합하는 모든 요소들로 새로운 배열 반환

.slice(begin,end) => 어떤 배열의 begin 부터 end 까지(end 미포함)에 대한 얕은 복사본을 새로운 배열 객체로 반환

.splice(begin, count) => 배열의 인덱스 부터 count만큼 기존 요소를 삭제 또는 교체하거나 새 요소를 추가하여 배열의 내용을 변경한다.

.split() => 문자열을 부분 문자열(substring)로 구분해 문자열 객체를 여러 개의 문자열로 이루어진 배열로 분할 =>( ) 괄호 안의 구분자를 기준으로 나누어 배열로 반환 => ( ) 비어있을 시, 하나의 배열 반환, (' ')시 각 문자열을 분할하여 배열의 요소로 반환, ('-')시 -기준으로 나누어 배열로 반환

.reverse() => 배열을 반전한다. 첫 번째 배열 요소는 마지막 요소가 되고 마지막 요소는 첫 번째 요소가 된다.

.join() => 배열의 모든 요소를 문자열로 결합=> 구분자()를 기준으로 나뉨, ( )비어있을 시 배열을 ,으로나누어 반환(h,e,l,l,o), (' ')시 하나의 문자열로 반환(hello)

.shift() => 배열의 첫번째 요소 삭제

.reduce() => 배열의 누적값, 현재값, 초기값으로 생성한 새로운 배열 반환 => for, map, filter 등을 대체 가능, 단점 보완 가능, 여러가지 쓰임 가능 => 설정한 초기값이 acc가 됨, acc에 curr값을 더하거나, 가공한 curr값을 push하거나 등...

1. acc = 초기값 설정

2. 콜백 안{ }에서 배열의 curr값들이 하나씩 들어와서 로직 실행(acc.push(curr*2)) ... 등

3. return acc => 반복을 모두 마친 결과인 acc를 return함

const num_list = [1, 2, 3, 4, 5, 6, 7];
const result = num_list.reduce(
  (acc, curr) => {
    curr % 2 === 0 ? acc[0]++ : acc[1]++;
    return acc;
  },
  [0, 0]
);
console.log(result);

const students = [
  {
    name: "sue",
    age: 13,
  },
  {
    name: "sae",
    age: 30,
  },
  {
    name: "hoe",
    age: 20,
  },
  {
    name: "tea",
    age: 16,
  },
  {
    name: "jun",
    age: 22,
  },
];

const adults = students.reduce((acc, curr) => {
  curr.age >= 20 && acc.push(curr.name);
  return acc;
}, []);
console.log(adults);
function solution(numbers) {
  const answer = numbers.reduce((acc, curr) => {
    acc.push(curr * 2);
    return acc;
  }, []);
  return answer;
}

console.log(solution([1, 4, 9, 4, 5]));
//[ 2 ] 1 => [acc],curr => 초기값 [ ]= acc, acc에 curr*2가 push됨 
//[ 2, 8 ] 4
//[ 2, 8, 18 ] 9
//[ 2, 8, 18, 8 ] 4
//[ 2, 8, 18, 8, 10 ] 5
//[ 2, 8, 18, 8, 10 ]

 

 

 

배열 정렬

sort() => 배열을 재정렬해 주며, 배열 자체가 변경되므로 주의하여 사용한다. 

1. 파라미터(compareFunction)가 생략되면, 유니코드 순서에 따라서 오름차순으로 정렬(알파벳 a > b > c순)

2. 오름차순, 내림차순일 경우 콜백으로 파라미터를 전달해야함

3. 배열 내부값으로 세부 정렬도 가능하다 => a[1] - b[1] 

오름차순

arr.sort((a,b) => a - b)

내림차순

arr.sort((a,b) => b - a)

문자 정렬방법(오름차순)

array.sort((a, b) => a > b ? 1 : -1);

sort를 이용해 세부적으로 조정하여 문자열 정렬시키기

=> string1.localCompare(string2) 메소드 

string1.localCompare(string2) 
string1이 string2보다 전에 위치할 경우 음수(-1), 후에 위치할 경우 양수(1) 반환, 동일 시 0반환
// "a"는 "c" 전에 위치하므로 음수 값을 반환 
'a'.localeCompare('c'); // -2 혹은 -1 (또는 다른 음수 값) 

// 알파벳 순으로 단어 "check"는 "against"보다 뒤에 위치하므로 양수 값을 반환 
'check'.localeCompare('against'); // 2 혹은 1 (또는 다른 양수 값) 

// "a"와 "a"는 서로 동등하므로 중립 값 0을 반환 
'a'.localeCompare('a'); // 0

 

 

문자열 속성과 메소드

String.length / Array.length => 문자열, 배열에 사용 가능하다. 문자열, 배열의 갯수를 반환

parseInt() : 문자열 => 숫자 데이터만 추출하여 숫자열로 변환, 공백 무시, 소수점 무시 => 소수점 버림 기능으로 활용은 가능하나, 그 의도의 목적이 아닌, string을 number로 변환하기 위한 함수이기 때문에 불필요한 문자 변환 등의 기능이 포함되므로, 차라리 수학적으로 소수점 버림의 기능을 하는 Math.floor( ) 를 사용하는 것이 더 바람직한 것 같다. => Math.trunc 사용

.toString() : 숫자열 => 문자열으로 타입을 환해 준다.

.split() : 문자열을 일정한 구분자(seperator)로 잘라서 배열로 반환한다. split() 구분자를 아무것도 전달하지 않을 경우 => 문자열을 하나의 배열로 반환, (" ") 띄어쓰기로 나누어 갯수대로 배열로 반환, ("") (length가 0인 문자열)을 전달하면,
문자열을 각각의 문자별로 잘라서, 한 글자씩(공백 포함) 배열에 넣어 반환

.replace(문자열, 대체문자) : replace는 문자열에서 찾을 문자열 첫번째 요소를 대체 문자열로 변환한다. => 배열에서는 사용 불가

.replaceAll(문자열, 대체문자) : replace는 해당 문자열 첫번째 요소만 변환하지만 replaceAll은 해당하는 모든 문자열을 변환한다.

.replace(regex, "") : replace에 regex 정규표현식을 사용하면 정규표현식에 포함되는 모든 코드를 삭제시켜 준다.

 

 

숫자 속성과 메소드

.Number.isInteger(a) : 정수인지 확인하여 true false를 반환한다.

 

날짜 구하기

const date = new Date() : Date객체 생성

date.getFullYear() : 년도

date.getMonth() +1 => 0~11 사이의 값을 출력하기 때문에 일반적으로 월을 셀 때는 +1을 더하여 사용

date.getDate() :

date.getHours() : 시

date.getMinutes() : 분

date.getSeconds() : 초

 

 

문자열 찾기

문자열에 접근하는 방법 

1. String.CharAt(index)

2. String[ ]

const string = "hello";
console.log(string.charAt(2));
console.log(string[2]);

.indexOf("찾을 문자열") 또는 indexOf("찾을 문자열", "시작 위치") : 찾은 문자열의 시작 위치를 반환한다. 찾을 문자열이 없을 경우 -1을 반환한다. 찾을 위치를 두 번째 인자에 부여하면 시작 위치에서 부터 문자열을 찾는다. => 대소문자를 구분해야 한다. 대문자로 변경하는 toUpperCase()나, 소문자로 변경하는 toLowerCase()를 함께 사용해야 원하는 결과값을 확인할 수 있

.includes("찾을 문자열", 시작위치) : 찾을 문자열이 있을 경우 true, 없으면 false를 반환한다..search("찾을 문자열") : 포함하고 있는 문자의 인덱스를 반환한다. 해당 문자가 없을 경우에는 -1을 반환한다.

regex(정규식) : 복잡한 문자도 하나처럼 찾아낼 수 있고 하나의 문자를 여러개(배열)로 찾을 수 있다.

해당 문자를 포함하고 있으면 true 없으면 false를 반환한다.

const stringVal = "Hello world"
const exp = /hell/; 
exp.test(stringVal);

lastIndexOf("찾을 문자열") 또는 lastIndexOf("찾을 문자열", "시작 위치"): 문자열을 마지막부터 찾을 경우,

search("찾을 문자열") : search 함수는 indexOf 함수와 동일하게 문자열을 찾을 수 있다. search 함수는 문자열을 찾을 때 시작 위치는 지정할 수는 없다. 

 

 

문자열 삭제

.pop() => 배열의 마지막 요소 삭제

.shift() => 배열의 첫번째 요소 삭제

.splice(index, count) => 배열의 index 또는 문자열 부터 count만큼 삭제

 

Map() 객체

- Map() 객체 생성 : Map객체는 중복을 허용하지 않기 때문에 알아서 중복을 제거해 준다(객체의 중복 제거에서도 유용하게 사용가능). 또 set(), get(), delete(), clear()등의 유용한 메소드를 사용할 수 있다.

=> Set()객체도 있음, 둘의 차이점은 뭘까?

1) .get(' ') => 해당하는 key값을 찾아서 반환

2) .set(key, value) => 객체 내부에 설정한 key와 value 값으로 key : value를 추가, 수정해 준다.

3) .delete(' ') => 해당 하는 key값을 삭제한다.

4) .clear( ) => 객체 내부의 모든 property들을 비워준다.

+ ❗배열을 Map이나 Set객체로 생성하는 방법

const wordSet = new Set(["aya", "ye", "woo", "ma"])
//결과
Set(4) { 'aya', 'ye', 'woo', 'ma' }

 

Set() 객체

1) .has(' ') => 지정된 값을 가지는 요소가 존재하는지 true/false로 여부를 나타내는 방법

 

Math 함수

Math.trunc() : 소수점 이하는 버린다. => 소수점 버릴 때, 즉 정수만 추출할 때는 Math.floor보다는 Math.trunc가 더 좋은 것 같다.(함수의 의미상, floor은 내림 함수기 때문에 음수가 될경우, -3.3 => -4가 될 가능성이 있다.)
Math.round() : 반올림
Math.floor() : 내림 floor => 바닥까지 내린다고 생각 3.5 => 3 -3.5 -> -4
Math.ceil() : 올림 ceiling => 천장까지 올린다고 생각 3.5 => 4 -3.5 -> -3 

Math.sqrt(n) : n의 제곱근을 반환한다. => 144 => 12반환

+ toFixed() : 매개변수만큼 자리수를 반올림해 String으로 반환해주는 함수. 매개변수는 소수점 몇 번째 자리까지 나타낼 지를 나타낸다. 0~20까지 입력할 수 있다. 숫자예를 들어 아래처럼 매개변수를 2로 지정해주면, 소수점 둘째자리까지 반올림해서 나타낸다. default값은 0이기 때문에 toFixed()만 입력하면 소수를 정수로 만들 수 있다 => String으로 반환한다는 점을 주의하자! 'number '타입으로 사용하고 싶다면 Number() 메서드를 한번 더 사용해서 숫자로 변환해줘야 한다.