目录
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,以上述 数字类型 来 读写数据。
- 这些基本都是内部操作。不多讲了。