Array
Array.apply(null,Array(length))
- 특정 길이의 iterable한 Array 객체를 생성한다.
Array(7) // [,,,,,,,] 길이가 7인 배열. not iterable
Array.apply(null,Array(7)) // == Array(undefined,undefined,...,undefined) 길이가 7인 undefined 배열, iterable
Array.apply(null,Array(7)).map((el,i)=> i) // [0,1,2,3,4,5,6]
Array.of()
- 전달인자의 개수나 데이터 타입에 관계없이 새 배열 인스턴스를 생성한다.
Array.of(7); // [7]
Array.of(1,2,3) // [1,2,3]
Array(7) // [ , , , , , ,] 길이가 7인 배열
Array(1,2,3) // [1,2,3]
Array.prototype.entries()
- 배열의 각 익덱스에 대한 key/value 쌍을 가지는 새로운 Array Iterator 객체를 반환한다.
const arr = ['a','b','c'];
const iterator = arr.entries();
console.log(iterator.next().value);// [0,'a']
console.log(iterator.next().value);// [1,'b']
for( const [key,value] of arr.entries()){
console.log(key, value)
}
// 0,'a'
// 1,'b'
// 2.'c'
Array.prototpye.shift() / Array.prototype.unshift()
- shift()
- 배열에서 첫 번째 요소를 삭제하고 그 요소를 반환한다.
- unshift()
- 배열에서 첫 번째 요소를 추가하고 새로운 길이를 반환한다.
let arr = ['a','b','c'];
arr.shift();
console.log(arr);// ['b','c']
const newLength = arr.unshift('d');
console.log(arr); //['d','b','c']
console.log(newLength);// 3
Array.prototype.splice()
- 배열에서 요소를 추가/삭제 하고 삭제한 요소 배열을 반환한다.
let arr = ['a','b','c'];
arr.splice(1,2,'k');
console.log(arr) // ['a','k']
Array.prototype.join()
- 배열의 모든 요소를 연결해 하나의 문자열로 만든다.
let arr = ['a','b','c'];
console.log(arr.join('-'));//'a-b-c'
console.log(arr.join(''));//'abc'
Array.prototype.indexOf()
- 배열에서 지정된 요소를 찾을 수 있는 첫번째 인덱스를 반환하고 존재하지 않으면 -1을 반환한다.
let arr = ['a','a','b'];
console.log(arr.indexOf('a')) // 0
console.log(arr.indexOf('a',2)) //1
console.log(arr.indexOf('c') // -1
Array.prototype.keys()
- 배열의 각 _인덱스_를 키 값으로 가지는 새로운 Array Iterator객체를 반환한다.
let arr =['a','b','c'];
const iterator = arr.keys();
for(const key of iterator){
console.log(key);
} // 0
// 1
// 2
Array.prototype.flat()
- 모든 하위 배열 요소를 지정한 깊이까지 재귀적으로 이어붙인 새로운 배열을 생성한다.
let arr = ['a',['b','c'],[['d','e']]];
console.log(arr.flat()); // ['a','b','c',['d','e']]
console.log(arr.flat(2)); // ['a','b','c','d','e']
console.log(arr.flat(Infinity))//['a','b','c','d','e']
Array.prototype.flatMap();
- 먼저 매핑함수를 사용해 각 엘리먼트에 대해 map 수행 후, 결과를 새로운 배열로 flatten한다. 기본적으로 flat depth는 1이다.
let arr = [1,2,3];
arr.map(item=>item*2); // [2,4,6]
arr.map(item=>[item*2]) // [[2],[4],[6]]
arr.flatMap(item=>[item*2]) // [2,4,6]
arr.flatMap(item=>[[item*2]]) // [[2],[4],[6]]
Array.from()
- array-like object나 반복 가능한 객체(iterable object)를 얕게 복사해 새로운 Array 객체를 만든다.
console.log(Array.from('foo')); // ['f','o','o']
console.log(Array.from([1,2,3],x=>x+x); // [2,4,6]
Object
Object.assign()
- 하나 이상의 원본 객체들로부터 모든 열거가능한 속성들을 대상 객체로 복사한다. 같은 key는 덮어씌워 새로운 값으로 갱신한다.
const target = {a:1,b:2};
const source = {b:4,c:5};
const returnTarget = Object.assign(target,source);
console.log(returnTarget); // {a:1,b:4,c:5}
console.log(target); // {a:1,b:4,c:5} target도 값이 갱신된다!!
Object.freeze()
- 객체의 값을 변경할 수 없도록 동결한다. Object의 const라고 보면될듯하다.
const obj = {
prop: 42
};
obj.prop = 41;
console.log(obj.prop); // 41
Object.freeze(obj);
obj.prop = 40; // error in strict mode
console.log(obj.prop) // 41
String
'
String.prototype.match()
var str = 'For more information, see Chapter 3.4.5.1';
var re = /see (chapter \d+(\.\d)*)/i;
var found = str.match(re);
console.log(found);
String.prototype.padEnd() / String.prototype.padStart()
- 현재 문자열에 다른 문자열을 채워 주어진 길이를 만족하는 새로운 문자열을 반환한다.
console.log(`abc`.padEnd(10)); // 'abc '
console.log(`abc`.padEnd(10,'foo')); // `abcfoofoof`
console.log(`abc`.padEnd(6,'123456')); // `abc123`
console.log(`abc`.padEnd(1)); // `a`
String.prototype.slice()
- 문자열의 일부를 추출하면서 새로운 문자열을 반환한다.
console.log(`abc`.slice(1)) // bc
console.log(`abc.slice(0,1)) // a
console.log(`abc`.slice(-1)) // c
console.log(`abc`.slice(-3,-2) // a
String.prototype.split()
- 지정한 구분자를 이용하여 여러개의 문자열로 나눈다
console.log(`ab cd`.split(' ')); // ['ab'.'cd']
console.log(`ab cd`.split('')); //['a','b',' ','c','d']
console.log(`ab cd`.split()); // ['ab cd']
String.prototype.substring()
- 문자열의 시작 인덱스부터 종료 인덱스 전까지 문자열의 부분 문자열을 반환한다.
const str = 'abcde'
console.log(str.substring(1,3)); // bc
console.log(str.substring(2)); // cde
String.prototype.trim() / String.prototype.trimEnd() / String.prototype.trimStart()
- trim
- 양끝의 공백(space, tab, NBSP)을 제거해준다.
- trimEnd
- trimStart
const str = ' abcd '
console.log(str.trim()); 'abcd'
console.log(str.trimEnd()); ' abcd'
console.log(str.trinStart()); 'abcd '
Proxy
- 특정 객체(array,object)를 감싸 프로퍼티 읽기, 쓰기와 같은 객체에 가해지는 작업을 중간에서 intercept하는 객체로 작업은 Proxy 자체에서 처리하기도 하고, 원래 객체가 처리하도록 넘겨주기도한다.
참고사이트1
참고사이트2