2

我正在尝试拆分一个称为“顶点”的字符串数组并将其存储为浮点数组。

目前,字符串数组包含三个元素:["0 1 0", "1 -1 0", '-1 -1 0"]

我需要的是一个浮点数组,其中包含所有这些数字作为单独的元素:[0, 1, 0, 1, -1, 0, -1, -1, 0]

我使用 split() 函数如下:

for(y = 0; y < vertices.length; y++)
{
    vertices[y] = vertices[y].split(" "); 
}

...这给了我看起来是我所追求的东西,除了它仍然由三个字符串数组组成。

我如何使用 parseFloat() 和 split() 来确保所有元素都是独立的并且是浮点类型的?

4

2 回答 2

8

您可以Array.prototype.reduce为此使用方法:

var result = ["0 1 0", "1 -1 0", "-1 -1 0"].reduce(function(prev, curr) {
    return prev.concat(curr.split(' ').map(Number));
}, []);

alert(result); // [0, 1, 0, 1, -1, 0, -1, -1, 0]

如果需要,当然可以代替.map(Number)您使用。.map(parseFloat)

甚至更短:

var result = ["0 1 0", "1 -1 0", "-1 -1 0"].join(' ').split(' ').map(Number);
于 2014-11-17T17:33:28.127 回答
5

你可以做这样的事情。

var res = []
for (var y = 0; y < vertices.length; y++) {
  var temp = vertices[y].split(" ");
  for (var i = 0; i < temp.length; i++) {
    res.push(parseFloat(temp[i]));
  }
}

于 2014-11-17T17:33:43.687 回答