# 표준 내장 객체

## 학습 키워드

* 표준 내장 객체
  * 배열 내장 객체
  * 문자 내장 객체
  * Math 내장 객체

<br>

## [표준 내장 객체](https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects)

* 자바스크립트 엔진에 기본으로 `내장되어 있는 객체`를 의미

### [배열 내장 객체](https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array)

#### [push](https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/push)

* 배열의 값을 맨 뒤에서부터 추가
* 원본 배열 수정 O
* 배열의 새로운 길이 반환

#### [shift](https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/shift)

* 배열의 첫 번째 요소를 제거
* 원본 배열 수정 O
* 제거된 요소를 반환

#### [unshift](https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/unshift)

* 배열의 값을 맨 앞에서부터 추가
* 원본 배열 수정 O
* 배열의 새로운 길이 반환

#### [join](https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/join)

* 지정된 구분문자열로 연결한 새문자열을 만들어 반환

```javascript
const elements = ['Fire', 'Air', 'Water'];
console.log(elements.join('-')); // "Fire-Air-Water"
```

#### ⭐️ [sort](https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/sort)

* 배열 요소들을 정렬할 경우 사용
* 원본 배열 수정 O
* 문자열의 유니코드를 기준으로 정렬
* 숫자의 경우 인자로 비교함수를 사용한 방식으로 정렬 가능

```javascript
const number = [1, 2, 100, 20, 40];

// 오름차순 정렬
number.sort((a, b) => {
  return a - b;
});

// 내림차순 정렬
number.sort((a, b) => {
  return b - a;
});
```

```javascript
// 객체들로 구성된 배열 정렬
const user = [
  { name: '김똥개', age: 24 },
  { name: '홍길동', age: 20 },
  { name: '아무개', age: 25 },
];

user.sort((a, b) => a.age - b.age);
// [
//   { name: '홍길동', age: 20 },
//   { name: '김똥개', age: 24 },
//   { name: '아무개', age: 25 }
// ]
```

#### [reverse](https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/reverse)

* 배열의 순서를 반전
* 원본 배열 수정 O

```javascript
const number = [1, 2, 3, 4, 5];
number.reverse(); // [5,4,3,2,1]
```

#### [forEach](https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/reduce)

* 각 배열의 요소에 대한 제공된 함수를 한번씩 실행
* 순회 메서드
* 항상 `undefined` 반환

#### [find](https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/find)

* 제공된 배열에서 제공된 함수를 만족하는 `첫번째 요소` 반환
* 테스트 함수를 만족하는 값이 없으면 `undefined` 반환

```javascript
const array = [5, 12, 8, 130, 44];
const found = array.find((element) => element > 10);
console.log(found); // 12
```

#### ⭐️ [filter](https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/filter)

* 주어진 배열의 일부에 대한 얕은 복사본을 생성 → `새로운 배열` 반환
* 주어진 배열에서 제공된 함수에 의해 구현된 테스트를 통과한 요소로만 필터링

```javascript
const array = [5, 12, 8, 130, 44];
const found = array.filter((element) => element > 10);
console.log(found); // [12,130,44]
```

#### ⭐️ [map](https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/map)

* 배열 내의 모든 요소 각각에 대하여 주어진 함수를 호출한 결과를 모아 `새로운 배열` 반환

```javascript
const array = [1, 2, 3, 4, 5];
const found = array1.filter((element) => element * 2);
console.log(found); // [2,4,6,8,10]
```

#### ⭐️ [reduce](https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/reduce)

* 각요소에 대한 주어진 함수를 실행하고, `하나의 결과값`을 반환

```javascript
// array.reduce(callback[, initialValue]);

배열.reduce(() => {}, 초기값);
```

```javascript
[0, 1, 2, 3, 4].reduce((prev, curr) => prev + curr, 0);
```

<br>

### [문자 내장 객체](https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/String)

#### ⭐️ [split](https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/String/split)

* 지정한 구분자를 기준으로 끊은 부분 문자열을 다음 배열 반환

```javascript
const fruits = 'apple,banana,orange';

console.log(fruits.split(',')); // ["apple", "banana", "orange"]
```

#### ⭐️ [includes](https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/String/includes)

* 지정한 문자열이 포함되어 있는지를 판별하고, `true/false` 반환

```javascript
const fruits = 'apple,banana,orange';

console.log(fruits.includes('apple')); //true
console.log(fruits.includes('color')); //false
```

#### [charAt](https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/String/charAt)

* 문자열에서 특정 인덱스에 위치하는 유니코드 `단일문자`를 반환

```javascript
const fruits = 'apple';

console.log(fruits.charAt(0)); // a
console.log(fruits.charAt(3)); // l
```

#### [concat](https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/String/concat)

* 매개변수로 전달된 모든 문자열을 호출 문자열에 붙인 `새로운 문자열` 반환

```javascript
const str1 = 'Hello';
const str2 = 'World';

console.log(str1.concat(' ', str2)); // "Hello World"
console.log(str2.concat(', ', str1)); // "World, Hello"
```

#### ⭐️ [slice](https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/String/slice)

* 문자열의 일부를 추출하여 `새로운 문자열` 반환
* `endIndex` : 그 직전까지 추출, 해당 인덱스 위치 문자는 추출에 포함 X

```javascript
str.slice(beginIndex[, endIndex])
```

```javascript
const str = 'hello/word';
console.log(str.slice(0, 5)); // 'hello'
```

<br>

### [Math 객체](https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Math)

* 수학적인 상수와 함수를 위한 속성과 메서드를 가진 내장 객체
* `Math` 생성자가 아니며, 모든 속성과 메서드는 `정적`이다.

#### [min](https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Math/min)

* 주어진 숫자들 중 가장 작은 값을 반환

#### [max](https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Math/max)

* 주어진 숫자 중 가장 큰 수를 반환
* 매개변수가 없을 경우 : `-Infinity` 반환

#### [random](https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Math/random)

* 0보다 크거나 1보다 작은 부동 소수점 의사 난수를 반환

#### 🧐 만약 최소와 최대 범위를 지정하고 싶다면?

```javascript
Math.random() * (max - min) + min;
```

```javascript
let result = Math.random() * (45 - 1) + 1;
console.log(result); // 1.000000000 ~ 44.9999999999
```

#### [round](https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Math/round)

* 소수점 반올림

```javascript
let result = Math.round(1.1);
console.log(result); // 1
```

#### [floor](https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Math/floor)

* 소수점 내림

```javascript
let result = Math.floor(1.1);
console.log(result); // 1
```

#### [ceil](https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Math/ceil)

* 소수점 올림

```javascript
let result = Math.ceil(1.1);
console.log(result); // 2
```

#### [abs](https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Math/abs)

* 주어진 숫자의 절대값을 반환

```javascript
let result = Math.abs(5 - 3);
console.log(result); // 2

let result = Math.abs(3 - 5);
console.log(result); // 2
```

#### [pow](https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Math/abs)

* x의 y 거듭제곱을 반환

```javascript
let result = Math.pow(2, 3); // 2의 3승 = 8
console.log(result); // 8
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://magrowing.gitbook.io/magrowing-gitbook/project/project_camp/javascipt/global_object.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
