TIL 67 | 배열2(배열 메서드1)
37058 단어 위코드WeCodeJavaScript배열TILJavaScript
배열 메서드(배열 API)란 무엇이며, Array 생성자 함수의 정적 메서드와 원본을 변경하지 않는 배열 메서드에 대해 적어본다
배열 메서드란❓
배열 메서드(배열 API)
- JS는 배열을 다룰 때 유용한 다양한 빌트인 메서드를 제공한다
- Array 생성자 함수는 정적 메서드를 제공하며, 배열 객체의 프로토타입인 Array.prototype은 프로토타입 메서드를 제공한다.
- 배열 메서드는 결과물을 반환하는 패턴이 두 가지이다
- 원본 배열을 직접 변경하는 메서드
- 원본 배열을 직접 변경하지 않고 새로운 배열을 생성하여 반환하는 메서드
Array 생성자 함수의 정적 메서드❗
Array.isArray
Array.isArray()
메서드는 전달된 인수가 배열이면 true, 배열이 아니면 false를 반환한다
- true를 반환하는 CASE-
const a = Array.isArray([]);
console.log(a) // true
const b = Array.isArray([1,2]);
console.log(b); // true
const c = Array.isArray(new Array());
console.log(c); // true
- false를 반환하는 CASE-
const d = Array.isArray();
console.log(d); // false
const e = Array.isArray({});
console.log(e); // false
const f = Array.isArray(null);
console.log(f); // false
const g = Array.isArray(undefined);
console.log(g); // false
const h = Array.isArray(1);
console.log(h); // false
const i = Array.isArray('Array');
console.log(i); // false
const j = Array.isArray(true);
console.log(j); // false
const k = Array.isArray(false);
console.log(k); // false
const l = Array.isArray({0:1, length:1});
console.log(l); // false
Array.of
- 배열1에서 살펴보았다.
Array.of()
는 Array 생성자 함수의 정적 메서드였다
Array.from
- 배열1에서 살펴보았다.
Array.from()
는 Array 생성자 함수의 정적 메서드였다
원본 배열에 영향을 끼치지 않는 메서드❗
Array.prototype.indexOf
- indexOf 메서드는 원본 배열에서 인수로 전달된 요소를 검색하여 인덱스를 반환
- 원본 배열에 인수로 전달한 요소와 중복되는 요소가 여러 개 있으면 첫 번째로 검색된 요소의 인덱스를 반환한다
- 원본 배열에 인수로 전달한 요소가 존재하지 않으면 -1을 반환한다
- 인수가 두 개가 오면 두 번째 인수는 검색을 시작할 인덱스를 가르킨다.(예시2)
- 원본 배열에 영향을 끼치지 않는다(예시3)
- Array.prototype.indexOf의 의미 : 배열 데이터를 대괄호[ ]로 표현하여 손쉽게 만드는 리터럴 방식의 데이터 부분 뒤에 indexOf라는 속성을 붙여서 사용이 가능하다는 뜻([1,2].indexOf()로 사용이 가능함)
const arrr = [1, 2, 2, 3]
- 예시1-
arrr.indexOf(2); // 1
arrr.indexOf(4); // -1
- 예시2-
arrr.indexOf(2, 2); // -1
- 예시3-
console.log(arrr); // [1, 2, 2, 3]
- indexOf 메서드 활용 : 배열에 특정 요소가 존재하는지 확인할 때 유용하다
const foods = ['apple', 'banana', 'orange']
if(foods.indexOf('mango') == -1) {
foods.push('mango');
}
console.log(foods); // ["apple", "banana", "orange", "mango"]
- indexOf 메서드 대신 ES7에서 도입된 Array.prototype.includes 메서드를 사용할 수도 있다
Array.prototype.concat
- .concat() : 두 개의 배열 데이터를 병합해서 새로운 배열을 만드는 메소드이다
- 인수로 전달된 값들을 원본 배열의 마지막 요소로 추가한 새로운 배열을 반환한다
- concat의 인수로 숫자가 오면 concat에 붙어있는 배열에 숫자가 더해진 값을 반환한다(예시2)
- concat에 인수가 두 개가 오면, 두 번째 인수는 병합된 배열에 추가할 요소의 값이 된다(예시3)
- 인수로 전달받은 값이 배열인 경우 concat 메서드는 인수로 전달받은 배열을 해체하여 새로운 배열의 마지막 요소로 추가한다. push와 unshift와는 다르다(예시4)
- 원본의 배열 데이터가 변하지 않는다
const numbers = [1, 2, 3, 4]
const fruits = ['Apple', 'Banna', 'Cherry']
let result6 = numbers.concat(fruits)
console.log(reult6); // [1, 2, 3, 4, "Apple", "Banna", "Cherry"]
console.log(numbers.concat(fruits)) // [1, 2, 3, 4, "Apple", "Banna", "Cherry"]
- 원본 배열은 변경되지 않는다-
console.log(numbers) // [1, 2, 3, 4]
console.log(fruits) // ['Apple', 'Banna', 'Cherry']
-예시2-
let result7 = numbers.concat(5)
console.log(result7) // [1, 2, 3, 4, 5]
-예시3-
let result8 = numbers.concat(fruits,5)
console.log(result8) // [1, 2, 3, 4, "Apple", "Banna", "Cherry", 5]
-예시4-
const ahaha = [3, 4]
ahaha.unshift([1,2])
ahaha.push([5,6])
console.log(ahaha) // [[1, 2], 3, 4, [5, 6]]
let result10 = [1,2].concat([3,4])
console.log(result10) // [1, 2, 3, 4]
result10 = result10.concat([5,6])
console.log(result10) // [1, 2, 3, 4, 5, 6]
Array.prototype.slice
- slice 메서드는 인수로 전달된 범위의 요소들을 복사해서 배열로 반환한다
- slice는 두 개의 매개변수를 갖는다. slice(start, end)
- start : 복사를 시작할 인덱스이다.(예시1) 음수인 경우 배열의 끝에서의 인덱스를 나타낸다. 예를 들어, slice(-2)는 배열의 마지막 두 개의 요소를 복사하여 배열로 반환한다(예시2)
- end : 복사를 종료할 인덱스이다. 이 인덱스에 해당하는 요소는 복사되지 않는다. end는 생략 가능하며 생략하면 start로 전달받은 인덱스부터 모든 요소를 복사하여 배열로 반환한다(예시2)
- slice 메서드의 인수를 모두 생략하면 원본 배열의 복사본을 생성하여 반환(예시3)
- 원본 배열은 변경되지 않는다
-예시1-
const mahaha = [1, 2, 3]
let result222 = mahaha.slice(0, 1)
console.log(result222) // [1]
console.log(mahaha) // [1, 2, 3]
-예시2-
let result223 = mahaha.slice(-2)
console.log(result223) // [2, 3]
console.log(mahaha) // [1, 2, 3]
-예시3-
let result224 = mahaha.slice()
console.log(result224) // [1, 2, 3]
console.log(mahaha) // [1, 2, 3]
Array.prototype.join
- join 메서드는 원본 배열의 모든 요소를 문자열로 변환한 후, 구분자로 연결한 문자열을 반환한다
- 구분자는 생략이 가능하며 기본 구분자는 콤마(',')이다
- join 메서드의 인수를 통해 구분자를 없애거나(예시2), 구분자를 없애고 공백을 삽입하거나(예시3), 콤마를 다른 구분자로 변경하는 것도 가능하다(예시4)
- 원본 배열은 변경되지 않는다
const mahaha = [1, 2, 3]
let result = mahaha.join() // "1, 2, 3"
console.log(mahaha) // [1, 2, 3]
-예시2-
let result1 = mahaha.join('')
console.log(result1) // "123"
console.log(mahaha) // [1, 2, 3]
-예시3-
let result2 = mahaha.join(' ')
console.log(result2) // "1 2 3"
console.log(mahaha) // [1, 2, 3]
-예시4-
let result3 = mahaha.join(':')
console.log(result3) // "1:2:3"
console.log(mahaha) // [1, 2, 3]
Array.prototype.include
- includes() 메서드는 붙어있는 배열데이터의 인수로 사용된 특정한 데이터가 포함이 되어 있는지 확인하여, true/false 형태로 판별 값을 반환한다
- includes()에는 인수를 두 개 사용할 수 있다. 두 번째 인수로 검색을 시작할 인덱스를 지정할 수 있다(옵션, 예시2)
- 원본 배열에 영향을 주지 않는다
const vha = [1, 2, 3, 4, 5]
let result777 = vha.includes(2)
console.log(result777) // true
console.log(vha) // [1, 2, 3, 4, 5]
-예시2-
const vha = [1, 2, 3, 4, 5]
let result778 = vha.includes(2, 3) // 배열 요소에 2가 포함되어 있는지 index 3부터 검사를 시작한다
console.log(result778) // false
console.log(vha) // [1, 2, 3, 4, 5]
Array.prototype.flat
- flat 메서드는 인수로 전달한 깊이만큼 재귀적으로 배열을 평탄화한다. 변경된 배열을 반환한다
- flat의 인수
- 인수의 기본값은 1이다. 인수를 생략할 경우 기본값 1로 인식한다(예시2)
- 중첩 배열의 평탄화할 깊이를 인수로 전달할 수 있다. 인수가 2이면 2단계 깊이까지 평타화된다는 뜻이다. 대괄호를 2개 없앤다고 생각하면 편하다(예시3)
- 인수로 Infinity를 전달하면 중첩배열 모두를 평탄화한다
- 원본 배열에는 영향을 주지 않는다
-예시1-
const p = [1, 2, [3, 4, 5]]
let result = p.flat()
console.log(result) // [1, 2, 3, 4, 5]
-예시2-
const p1 = [1, 2, [3, 4, 5]]
let result1 = p1.flat(1)
console.log(result1) // [1, 2, 3, 4, 5]
-예시3-
const p2 = [1, [2, [3, [4, [5]]]]]
let result1 = p2.flat(2)
console.log(result1) // [1, 2, 3, [4, [5]]]
console.log(p2) // [1, [2, [3, [4, [5]]]]]
let result2 = p2.flat(3)
console.log(result2) // [1, 2, 3, 4, [5]]
let result3 = p2.flat(4)
console.log(result3) // [1, 2, 3, 4, 5]
-예시3-
const a = [1, [2, [3, [4, [5]]]]].flat(Infinity)
console.log(a) // [1, 2, 3, 4, 5]
Author And Source
이 문제에 관하여(TIL 67 | 배열2(배열 메서드1)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@yeonbee/TIL-67-배열2배열-메서드1저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)