我正在返回一个大型JSON对象,并且特定部分中的每个元素都是一个字符串。我需要能够将所有这些转换成浮点数。
目前的数组如何:
[
["1402408800","0.0"],
["1402408800","0.0"],
["1402408800","0.0"],
]
转化后需要如何:
[
[1402408800,0.0],
[1402408800,0.0],
[1402408800,0.0],
]
我可以使用v.PriceHistory
引用此数组,因此我尝试了以下内容:
var newArr = [];
for (var i = 0; i < v.PriceHistory.length; i++) {
parseFloat(v.PriceHistory[i]);
newArr += v.PriceHistory[i];
}
虽然,上面只是将它全部作为单个数组返回,而不是恢复为原始格式。
尝试了一些事情并在线查看,但没有关于转换多维数组的信息。
答案 0 :(得分:3)
由于您已经在使用jQuery,因此可以使用map()来更改数组中的所有元素:
var a = [
["1402408800","0.0"],
["1402408800","0.0"],
["1402408800","0.0"],
];
a = a.map(function(elem) {
return elem.map(function(elem2) {
return parseFloat(elem2);
});
});
这是一个完全通用的函数,适用于任何n维数组:
(function(elem) {
var callee = arguments.callee;
return elem instanceof Array ? elem.map(function(elem2) { return callee(elem2); })
: parseFloat(elem);
})
(["1", "2", ["10", "20", ["100", "200"], "30"]]);
如果您复制并粘贴到控制台,您将看到输出:
[1, 2, [10, 20, [100, 200], 30]]
答案 1 :(得分:1)
迭代大对象(帖子中的第一个代码段)并将当前数组的第二个元素设置为已解析的值。
代码示例(其中l
是大对象):
for (var i = 0; i < l.length; ++i) {
l[i][1] = parseFloat(l[i][1]);
}
答案 2 :(得分:1)
为此你需要浏览数组的每个元素,检查它会对你有所帮助
var yourArray = /*YOUR ARRAY*/;
var newArray = [];
for (var i = 0; i < yourArray.length; i++) {
var currentArray = yourArray[i];
for (var j = 0; j < currentArray.length; j++) {
if(!newArray[i]){
newArray[i]=[];
}
newArray[i][j] = parseFloat(currentArray[j], 10);
}
}
console.log(newArray);
答案 3 :(得分:0)
这个怎么样:
var newArr = [];
for (var i = 0; i < v.PriceHistory.length; i++) {
newArr[i] = [];
for (var k = 0; k < v.PriceHistory[i].length; k++) {
newArr[i].push(parseFloat(Price[i][k]));
}
}
这有用吗?