目錄
array in javascript (類)
Array.of(), Array.from()
- Array.of() 用傳入的參數轉化爲數組,類似於直接的 literal syntax
function createArray(arrayCreator, value){
return arrayCreator(value)
}
let items = createArray(Array.of, value)
- Array.from 把 array-like 的數組變成真的array。
- .of 和 .from 都用 this 來決定返回哪種 array 而不是 Symbol.species。
find() and findIndex()
arr.find( (item,index,arr) => {
return item >10 // 某個條件,滿足時即打斷返回
}, thisObj)
let numbers = [25, 30, 35, 40, 45];
console.log(numbers.find(n => n > 33)); // 35
console.log(numbers.findIndex(n => n > 33)); // 2
fill() , copyWithin()
- 用特定的值來填充/替換數組的元素
arr.fill(valuetofill, startindex, endindex)
// 會替換 arr 的 startindex,startindex之後到endindex之前的元素,如果沒有endindex則會fill startindex及之後所有的元素
// 如果傳入負數 會自動變爲 arr.length + negative number
let numbers = [1, 2, 3, 4];
// paste values into array starting at index 2
// copy values from array starting at index 0
// stop copying values when you hit index 1, optional
numbers.copyWithin(2, 0, 1);
console.log(numbers.toString()); // 1,2,1,4
typed arrays
由於 js 中的數字是以 64位的浮點村塾的,只是在需要時轉爲32位的證書。因此引用 typed array 來處理這一困境。ES6中的 typed array 可以被當做 WebGL 版本的進化。
ArrayBuffer 開闢一個新內存空間但沒有特殊指定用途
let buffer = new ArrayBuffer(10) // allocate 10 bytes
let buffer2 = buffer.slice(4,6)
console.log(buffer2.byteLength)
let view = new DataView(buffer)
- 可以改變 buffer 的存儲數據,但不能改變 array buffer 本身的大小。
- 用 view 來操作 array buffer,以上述 數字類型 來 讀寫數據。
- 這些基本都是內部操作。不多講了。