在Javascript中将字符串转换为类型化数组
Convert string to typed array in Javascript
我有一个字符串,应该解析为JSON,然后转换为Float32Array。字符串如下:
{"vertices":"[-1.0, -1.0, -1.0, -1.0, -1.0, 0.0, 1.0, -1.0, 0.0]"}
数组应分配给一个变量,例如:
mesh.vertices = new Float32Array([-1.0, -1.0, -1.0, -1.0, -1.0, 0.0, 1.0, -1.0, 0.0]);
如何转换字符串,使数组由浮点数组成?出于安全考虑,我不想使用eval()。
您可以使用JSON.parse:
mesh.vertices = new Float32Array(JSON.parse(myString).vertices);
这是假设你的意思是:
{"vertices":[-1.0, -1.0, -1.0, -1.0, -1.0, 0.0, 1.0, -1.0, 0.0]}
如果JSON真的像你说的那样(FWIW有点奇怪),它应该是:
mesh.vertices = new Float32Array(JSON.parse(JSON.parse(myString).vertices));
使用JSON.parse
安全地解析JSON数据。看见https://developer.mozilla.org/En/Using_native_JSON
我仍然建议您使用本机JSON
解析器(正如其他人所提到的),但这里有一个非常简单且有限的实现:
var stringToParse = "{vertices:[-1.0, -1.0, -1.0, -1.0, -1.0, 0.0, 1.0, -1.0, 0.0]}";
Object.prototype.simpleParse = function() {
if (!(this instanceof String)) throw "Type mismatch";
var re = /('w+)[^:]+:'[([^']]+)']/g;
var keyvalues = re.exec(this.valueOf());
var key = keyvalues[1];
var values = keyvalues[2].split(",");
var arr = [];
for (val in values) {
var currentValue = (/-?'d+(.'d+)?/).exec(values[val])[0];
arr.push(currentValue);
}
arr.pop();
ret = {};
ret[key] = new Float32Array(arr);
return ret;
}
console.log(stringToParse.simpleParse());
演示:http://jsfiddle.net/mKWGH/
相关文章:
- Javascript-将类型化数组保存为blob,并作为二进制数据读回
- 在Node.js中用.bin文件内容填充一个类型化数组
- 将非类型化数组编译为 C 的有效方法是什么?
- 如何使用类型化数组来模拟对象
- 编辑类型化数组中的值
- 了解 JavaScript 中类型化数组的概念
- 如何检查是否支持 javascript 类型化数组
- 用于在javascript中存储对象的类型化数组
- 在Javascript中将字符串转换为类型化数组
- 正在类型化数组中移动数据
- 不能给类型化数组缓冲区赋值
- 检测对象是否为Array或类型化数组
- 从类型化数组更新svg路径
- 如何在JavaScript类型化数组中使用字符串
- 类型化数组vs数组用例
- 是否有可能在JavaScript中使用类型化数组从4x Uint8转换为Uint32 ?
- 为什么类型化数组构造函数要求offset为基础类型大小的数倍
- 如何检查变量是否是javascript中的类型化数组
- 有没有一种方法可以将类型化数组设置为零
- TypeError:使用类型化数组时发生类型错误