- 새로운 생성 메소드
- 유용한 편의 메소드
- 타입 배열 만드는 능력
-
[].slice().call()
-
Array.from()
-
Array.of()
-
[...args]
let items = new Array(2); // length: 2로 초기화
items = new Array("2"); // length: 1, items[0] = "2" 로 초기화
items = new Array(1, 2); // length: 2, items[0] = 1, items[0] = 2
- Array.of()
- Array 생성자와 유사하게 동작하지만
- 숫자 값 하나가 전달 된 경우에도 특별하게 처리하지 않는다.
- Array 생성자와 유사하게 동작하지만
function createArray(arrayCreator, value) {
return arrayCreator(value);
}
let items = createArray(Array.of, value);
- value가 숫자가 아니라는 것을 보장하지 못하면 Array를 전달하는 것은 위험하다.
- Transfer non-Array Object to Array Object was difficult in es5
to convert Array-Like Object, arguments, to Array Object in es5 as below
function makeArray(arrayLike) {
var result = [];
for (var i = 0; len = arrayLike.length; i < len; i++) {
result.push(arrayLike[i]);
}
return result;
}
function doSomething() {
var args = makeArray(arguments);
// args 변수 사용
}
with Array.prototype.slice.call();
function makeArray(arrayLike) {
return Array.prototype.slice.call(arrayLike);
}
function doSomething() {
var args = makeArray(arguments);
// args 변수 사용
}
In es6, you can use Array.from() method
function doSomething() {
var args = Array.from(arguments);
// args 변수 사용
}
- __두 번째 인자__Array.from()에 두 번째 인자로 매핑 함수를 제공할 수 있다.
function translate() {
return Array.from(arguments, (value) => value + 1);
}
let numbers = translate(1, 2, 3);
console.number(numbers); // 2, 3, 4
It is like a map.
var x = [1, 2, 3].map(value => value + 1);
- 세 번째 인자: 매핑 함수의 this 값을 나타내는 세 번째 인자를 선택적으로 전달할 수도 있다.
let helper = {
diff: 1,
add(value) {
return value + this.diff;
}
};
function translate() {
return Array.from(arguments, helper.add, helper)
}
let numbers = translate(1, 2, 3);
console.log(numbers); // 2, 3, 4
let numbers = {
*[Symbol.iterator]() {
yield 1;
yield 2;
yield 3;
}
};
let number2 = Array.from(numbers, (value) => value + 1);
console.log(number2);
객체가 유사 배열이고 이터러블이라면, Array.from()에서 변환 값을 결정할 때 이터레이터가 사용된다.
- 새로운 메서드
- find()
- findIndex()
- 어떤 값을 가지는 배열의 사용을 돕기 위한 메서드
- fill()
- copyWithin()
- 숫자만 사용하도록 es6에 도입된 배열 형태인 타입 배열의 사용례에서 영향을 받았다.
- es5
- indexOf()
- lastIndexOf()
- 하나의 값만 검색 가능했다.
- es6
- find()
- return value;
- findIndex()
- 두 개의 인자를 받는다. (parameters)
- callback
- 배열 요소
- 배열 요소의 인덱스
- 배열
- same as map() and forEach() do
- return true if array element satisfies the defined condition
- this which will be used in callback above // optional
- return index
- find()
let numbers = [25, 30, 35, 40, 45];
console.log(numbers.find(n => n > 33)); // 35
console.log(numbers.findIndex(n => n > 33)); // 2
- These mathods are appropriate in finding an Array element that satisfies a condition
- override Array values with a recieved value
let numbers = [1, 2, 3, 4];
numbers.fill(1);
console.log(numbers.toString()); // 1,1,1,1
numbers.fill(0, 1, 3);
console.log(numbers.toString()); // 1,0,0,1
-
can use start and end of index
-
negative number
- -1 === array.length - 1
let numbers = [1, 2, 3, 4];
// 배열 인덱스 2에서 시작하는 값에 붙여넣음 >>> numbers[2] == 3
// 배열 인덱스 0에서 시작하는 값을 복사
// 인덱스 1에서 값 복사를 멈춤
numbers.copyWithin(2, 0, 1);
console.log(numbers.toString()); // 1, 2, 1, 4
- 특수한 목적을 가지고 만들어짐
- 숫자 타입과 동작하도록 설계
- canvas >> WebGL 속도 개선
- 자바스크립트 부동소수점 숫자 표현을 저장
- 64비트 사용하는 IEEE 754
- 타입 배열은 여덟 가지 다른 숫자 타입의 저장 공간과 조작을 허용한다.
- 검색 lol
- 모든 타입 배열은 버퍼에 기초
- 배열 버퍼는 지정된 수의 바이트를 포함하는 메모리 장소
let buffer = new ArrayBuffer(10); // 10바이트 할당
console.log(buffer.byteLength); // 10
let buffer2 = buffer.slice(4, 6);
console.log(buffer2.byteLength); // 2
- can use slice()
벼열 버퍼는 항상 만들어질 때 명시한 정확한 바이트 수를 나타낸다.
배열 버퍼에 포함된 데이터는 변경할 수 있지만 배열 버퍼의 크기는 절대 변경할 수 없다.
- 배열 버퍼: 메모리 장소
- 뷰: 메모리를 조작하는 데 사용할 인터페이스
...
아 지루해서 다음에 다시 정리.. lol..........
타입 배열이 왜 필요한지 잘 모르겠다....... lol~