삶 가운데 남긴 기록 AACII.TISTORY.COM
javascript array, map, set 본문
Array.prototype의 주요 메서드
push()
배열의 마지막에 하나 이상의 요소(element)를 추가하고 그 배열의 길이를 리턴
var a = ["A", "B"];
a.push("C", "D");
pop()
배열의 마지막 요소를 잘라내서 리턴
shift()
배열의 첫 요소를 제거하고 모든 배열의 요소들을 왼쪽으로 이동 시킨뒤 제거된 첫 요소를 리턴
unshift()
배열의 앞에 요소를 한개 이상 추가한 후 모든 배열의 요소를 오른쪽으로 이동후 배열의 길이를 리턴
var a = [1,2,3];
a.unshift(4,5); //[4,5,1,2,3]
splice()
배열의 요소를 갈아끼우는 작업을 하는 메서드입니다. 이때 삭제된 요소들이 리턴됩니다.
첫번째 인수: 수정하기 시작할 부분의 인덱스
두번째 인수: 삭제할 요소의 개수
세번째 이후 인수들: 삭제된 부분에 새롭게 추가할 배열의 요소들
var a = [1,2,3,4];
a.splice(1,2, x, y, z); //a =[1,x,y,z,4] 리턴=[2,3]
sort()
배열안의 요소를 정렬합니다. 인수는 비교 함수의 참조를 전달하며 리턴값은 정렬된 배열을 리턴합니다.
단, 비교 함수를 지정하지 않으면 배열의 요소를 문자열로 변환한 다음 사전순으로 정렬합니다.
비교 함수는 인수 2개를 받는데 f(a, b)라고 했을 때 다음 규칙을 따라야 합니다.
f(a,b) < 0 인경우 a를 b보다 작은 인덱스로 정렬
f(a,b) == 0 인경우 순서를 바꾸지 않음
f(a,b) > 0 인경우 b를 a보다 작은 인덱스로 정렬
function compareFunc(key){
return function(a,b){
return a[key] - b[key];
};
}
var person = [{name:"Tom", age:17}, {name:"Huck", age:18}, {name:"Becky", age:16}];
person.sort(compareFunc("age"));
//age를 기준으로 배열을 정렬하는 비교함수를 생성하여 정렬합니다.
Array 접근자 메서드
join()
배열의 모든 요소 값을 문자열로 바꾼후 인수로 받은 문자로 연결해서 리턴합니다.
var a = [1, "a", b"];
a.join("-"); //"1-a-b"
concat()
인수로 받은 값을 배열의 요소로 추가해서 새로운 배열을 생성합니다.
var a =["A","B","C"];
a.concat(["D","E"]); //["A","B","C","D","E"]
slice()
배열의 일부 요소를 제거한 새로운 배열을 생성합니다.
첫번째 인수가 시작 인덱스이고 두번째 인수가 마지막 인덱스 입니다.
var a = ["A","B","C","D","E"];
a.slice(1,3); //["B", "C"]
indexOf(), lastIndexOf()
배열의 특정 값에 대한 인덱스를 리턴합니다.
첫 번째 인수: 검색할 값
두 번째 인수: 검색을 시작할 인덱스
toString(), toLocaleString()
배열의 요소를 문자열로 변환하여 쉽표로 연결한 문자열을 리턴합니다.
toLocaleString()은 해당 지역에 맞는 문자로 번역한 문자로 리턴합니다.
반복 메서드
forEach(function(value,index,array))
인수로 받은 함수를 배열의 요소별로 한 번씩 실행합니다.
var a = [1,2,3,4,5];
var sum = 0;
//배열의 합
a.forEach(function(value){
sum += value;});
console.log(sum); //15
a.forEach(function(v,i,a){
a[i] = v * v;});
console.log(a); //[1,4,9,16,25]
ArrayBuffer
고정 길이(byte)를 가진 인접한 메모리 영역(버퍼)를 확보합니다.
var buffer = new ArrayBuffer(1024);
console.log(buffer.byteLength); //1024
형식화 배열
Array 객체가 속도 문제가 있어서 그래픽 처리 등의 속도 향상을 위해 다른 언어처럼 형식화된 array를 구현하기 위함
8비트, 16비트, 32비트 정수와 32비트, 64비트 부동소수점 실수 타입을 지원합니다.
예) Uint32Array(), Float64Array64(), ...
var buffer = new ArrayBuffer(100);
var a = new Int16Array(buffer); //부호있는 16비트 정수 배열
console.log(a.length); //50
//buffer는 100바이트지만 Int16Array로 생성하면 요소 하나당 2바이트 이기 때문에 length는 50
Map
1. Object는 키로 문자열만 사용할 수 있지만 Map은 키 타입에 제한이 없습니다.
2. Map은 내부적으로 해시테이블을 이용해 검색하기 때문에 검색속도가 빠릅니다.
3. Map은 데이터를 다루기 위한 각종 메서드를 지원합니다.
- clear() : 모든 데이터를 삭제
- delete(key) : 해당 key값에 대한 데이터를 삭제
- entries() : 맵이 가진 데이터를 삽입한 순서대로 리턴
- forEach(callback) : 맵의 모든 데이터를 대상으로 callback 함수를 실행하며 순서는 삽입된 순서
- get(key) : 해당 key에 대응된 value 값을 리턴
- has(key) : 해당 key에 대한 데이터가 있는지 판단(boolean)
- keys() : 맵에 키값으로 이루어진 이터레이터를 리턴
- set(key, value) : 맵에 해당 key, value 값을 추가
- values() : 맵에 value값으로 이루어진 이터레이터를 리턴
Set
set은 중복되지 않은 데이터를 모은 객체입니다.
- add(value) : set에 value를 추가합니다.
- clear() : set의 모든 데이터를 삭제 합니다.
- delete(value) : set에 value를 값을 가지는 데이터를 삭제 합니다.
- values() : set의 데이터를 값으로 갖는 이터레이터를 리턴합니다.
- forEach(callback) : set의 모든 데이터를 대상으로 callback 함수를 실행합니다.
- has(value) : set에서 value를 값으로 갖는 데이터가 있는지 판별합니다.(boolean)
'DEV&OPS > Javascript' 카테고리의 다른 글
javascript 브라우저의 객체 (0) | 2022.03.04 |
---|---|
javascript 정규 표현식 (0) | 2022.03.03 |
javascript 알고리즘 연습 (0) | 2022.03.02 |
JSON (0) | 2022.03.02 |
javascript object property (0) | 2022.03.02 |