如何使用jQuery将多维数组的字符串转换为浮点数?

时间:2014-09-23 06:06:38

标签: javascript jquery arrays multidimensional-array

我正在返回一个大型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];
}

虽然,上面只是将它全部作为单个数组返回,而不是恢复为原始格式。

尝试了一些事情并在线查看,但没有关于转换多维数组的信息。

4 个答案:

答案 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]);
}

JSFiddle

答案 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]));
  }
}

这有用吗?