|
8 | 8 |
|
9 | 9 | 'use strict';
|
10 | 10 |
|
| 11 | +function truncateFloat32(arrayIn, len) { |
| 12 | + var arrayOut = new Float32Array(len); |
| 13 | + for(var i = 0; i < len; i++) arrayOut[i] = arrayIn[i]; |
| 14 | + return arrayOut; |
| 15 | +} |
| 16 | + |
| 17 | +function truncateFloat64(arrayIn, len) { |
| 18 | + var arrayOut = new Float64Array(len); |
| 19 | + for(var i = 0; i < len; i++) arrayOut[i] = arrayIn[i]; |
| 20 | + return arrayOut; |
| 21 | +} |
| 22 | + |
11 | 23 | /**
|
12 |
| - * Truncate a Float32Array to some length. A wrapper to support environments |
13 |
| - * (e.g. node-webkit) that do not implement Float32Array.prototype.slice |
| 24 | + * Truncate a typed array to some length. |
| 25 | + * For some reason, ES2015 Float32Array.prototype.slice takes |
| 26 | + * 2x as long, therefore we aren't checking for its existence |
14 | 27 | */
|
15 |
| -module.exports = function truncate(float32ArrayIn, len) { |
16 |
| - // for some reason, ES2015 Float32Array.prototype.slice takes 2x as long... |
17 |
| - // therefore we aren't checking for its existence |
18 |
| - var float32ArrayOut = new Float32Array(len); |
19 |
| - for(var i = 0; i < len; i++) float32ArrayOut[i] = float32ArrayIn[i]; |
20 |
| - return float32ArrayOut; |
| 28 | +module.exports = function truncate(arrayIn, len) { |
| 29 | + if(arrayIn instanceof Float32Array) return truncateFloat32(arrayIn, len); |
| 30 | + if(arrayIn instanceof Float64Array) return truncateFloat64(arrayIn, len); |
| 31 | + throw new Error('This array type is not yet supported by `truncate`.'); |
21 | 32 | };
|
0 commit comments