为什么 .slice() 不能与 Float32Array() 一起使用,而是与 Array() 一起使用? [JavaScript]
Why isn't .slice() working with Float32Array() but does with an Array()? [JavaScript]
出于某种原因,我无法让 .slice() 与 Float32Array 一起工作。如果将 Float32Array 替换为 Array,则效果非常好。 Float32Array 的文档将 .slice() 列为一种方法,所以我不明白是否存在错误或其他问题?或者是 2:00 上午,我看不到明显的东西?
function test()
{
var buf = new Float32Array( 10 );
for (var i = 0; i < 10; i++) {
buf[i] = i*0.3;
}
var test = buf.slice(2,5);
alert("Hello, Coding Ground!" + test[0]);
}
test();
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray/slice
看起来只有 Firefox 支持该方法。
(从https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Float32Array开始,沿继承链向上。)
勾选How to convert a JavaScript Typed Array into a JavaScript Array
function test()
{
var buf = new Float32Array( 10 );
var array = Array.prototype.slice.call(buf);
for (var i = 0; i < 10; i++) {
array[i] = i*0.3;
}
var test = array.slice(2,5);
alert("Hello, Coding Ground!" + test[0]);
}
test();
看起来它还没有在 Chrome 中,但它正在 Chrome Canary 中工作,这意味着它很快就会进入 Chrome。 运行 在控制台中查看 slice 是否已经工作。
new Float32Array().slice
出于性能方面的考虑,我不想将类型化数组转换为常规数组,因此我现在正在寻找解决方法。
编辑:
我刚刚为适合我的 Float32Array 切片编写了一个垫片。一旦 Chrome 开始支持切片方法,它将很快被忽略。
if (!Float32Array.prototype.slice) {
Float32Array.prototype.slice = function (begin, end) {
var target = new Float32Array(end - begin);
for (var i = 0; i < begin + end; ++i) {
target[i] = this[begin + i];
}
return target;
};
}
出于某种原因,我无法让 .slice() 与 Float32Array 一起工作。如果将 Float32Array 替换为 Array,则效果非常好。 Float32Array 的文档将 .slice() 列为一种方法,所以我不明白是否存在错误或其他问题?或者是 2:00 上午,我看不到明显的东西?
function test()
{
var buf = new Float32Array( 10 );
for (var i = 0; i < 10; i++) {
buf[i] = i*0.3;
}
var test = buf.slice(2,5);
alert("Hello, Coding Ground!" + test[0]);
}
test();
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray/slice
看起来只有 Firefox 支持该方法。
(从https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Float32Array开始,沿继承链向上。)
勾选How to convert a JavaScript Typed Array into a JavaScript Array
function test()
{
var buf = new Float32Array( 10 );
var array = Array.prototype.slice.call(buf);
for (var i = 0; i < 10; i++) {
array[i] = i*0.3;
}
var test = array.slice(2,5);
alert("Hello, Coding Ground!" + test[0]);
}
test();
看起来它还没有在 Chrome 中,但它正在 Chrome Canary 中工作,这意味着它很快就会进入 Chrome。 运行 在控制台中查看 slice 是否已经工作。
new Float32Array().slice
出于性能方面的考虑,我不想将类型化数组转换为常规数组,因此我现在正在寻找解决方法。
编辑: 我刚刚为适合我的 Float32Array 切片编写了一个垫片。一旦 Chrome 开始支持切片方法,它将很快被忽略。
if (!Float32Array.prototype.slice) {
Float32Array.prototype.slice = function (begin, end) {
var target = new Float32Array(end - begin);
for (var i = 0; i < begin + end; ++i) {
target[i] = this[begin + i];
}
return target;
};
}