我正在寻找将字符串类型的嵌套数组转换为float类型,或者从文本文件中解析它。格式与此[45.68395, 32.98629],[23.6777, 43.96555],[43.66679, 78.9648]
答案 0 :(得分:1)
第一步是从您的字符串创建有效的JSON。
如果您的输入将始终遵循您显示给我们的模式,则只需在字符串前面加上方括号即可。但是,这不是一个很好的解决方案。首先,您应该首先检查是否可以获取有效的JSON。
如果输入字符串始终遵循"[float, float], [float, float]"
的格式,则解决方案应如下所示:
const input = "[45.68395, 32.98629],[23.6777, 43.96555],[43.66679, 78.9648]";
// Add brackets in order to have valid JSON.
const arrayString = "[" + input + "]";
// Parse the string into an object.
const parsedArray = JSON.parse(arrayString);
// Flatten the nested array to get a one dimensional array of all values.
var flattenedArrays = [].concat.apply([], parsedArray);
// Do something with your values.
flattenedArrays.forEach(floatValue => console.log(floatValue));
答案 1 :(得分:0)
此thread向您展示如何遍历字符串数组以将其转换为浮点数数组。
答案 2 :(得分:0)
如果您的数字实际上是JSON中的数字(序列号不带引号),则可以使用JSON.parse。
let test = "[[3, 4.2], [5, 6]]";
let test2 = JSON.parse(test);
console.log(test2);
否则,您可以使用+
和一些数组映射将字符串数组简单地转换为数字数组。 :
let test = [["3", "4.2"], ["5", "6"]];
let test2 = test.map((x) => x.map((y) => +y));
console.log(test2);
当然,如果由于某种原因您不控制输入并且具有包含字符串的JSON,则可以将两种解决方案组合在一起。
答案 3 :(得分:0)
我希望这可以。.
var input = [[45.68395, 32.98629],[23.6777, 43.96555],[43.66679, 78.9648]]
var output = [];
input.forEach(o => {
o.forEach(s => parseFloat(s))
output.push(o);
})
console.log(output);