拆分字符串数组后未定义 (JavaScript)
Undefined after splitting array of strings (JavaScript)
我希望将一个字符串数组 (objData
) 拆分为单个元素并将它们复制到二维数组 (sequence
) 的第一行。请看下面的代码。
for(i = 0; i < objData.length; i++)
{
console.log("objData[i]: " + objData[i]);
parts = objData[i].split(' ');
sequence[0][n] = parts[1];
console.log("sequence[0][n]: " + sequence[0][n]);
sequence[0][n+1] = parts[2];
sequence[0][n+2] = parts[3];
n+=3;
parts = [];
}
注意n
初始化为0,objData
的每个元素都是一个字符串,形式如下:
objData[0] = "v 2.11733 0.0204144 1.0852"
我希望通过使用空格作为分隔符来拆分这些字符串(来自 objData
的每个元素)并将十进制值复制到 sequence
的第一行。我还想将这些字符串值解析为浮点数。
使用上面的代码复制值,但是 sequence
第一行的内容看起来像:
[2.11733NaN, 0.0204144NaN, 1.0852NaN, 2.12303undefined, 0.0131256undefined ..... etc.]
其余元素都附加了 'undefined',如图所示。
我尝试使用以下行解析为浮点数:
parts = objData[i].split(' ').map(parseFloat);
然而 sequence
的内容是:
[2.11733, 0.0204144, 1.0852, NaN, NaN ..... etc.]
如果有人能告诉我如何拆分和解析这些数据,我们将不胜感激!谢谢。
在我看来,你正在做这方面的工作。
让我们一步一步来:
// Make sure sequence array is empty
sequence = [];
// We want to process each element of the objData array :
objData.forEach (function (obj_n) {
// First split the element, one or more spaces separate fields
obj_n = obj_n.split (/ +/); // obj_n is now an array
// Extract elements 1 to 3
obj_n = obj_n.slice (1, 4); // obj_n is now the three data values
// Append the three elements to the sequence array:
sequence = sequence.concat (obj_n);
});
// Now convert to numbers:
sequence = sequence.map (function (f) { return +f });
更紧凑:
sequence = [];
objData.forEach (function (obj_n) {
sequence = sequence.concat (obj_n.split (/ +/).slice (1, 4));
});
sequence = sequence.map (function (f) { return +f });
回答 o.p 中的附加限制。下面的评论
function parseObjData (objData, m, n) { // Add n items to sequence m
if (!sequence[m]) // make sure sequence[m] exists
sequence[m] = [];
objData.forEach (function (obj_n) {
sequence[m] = sequence[m].concat (obj_n.split (/ +/).
slice (1, n + 1));
});
sequence[m] = sequence[m].map (function (f) { return +f });
}
我希望将一个字符串数组 (objData
) 拆分为单个元素并将它们复制到二维数组 (sequence
) 的第一行。请看下面的代码。
for(i = 0; i < objData.length; i++)
{
console.log("objData[i]: " + objData[i]);
parts = objData[i].split(' ');
sequence[0][n] = parts[1];
console.log("sequence[0][n]: " + sequence[0][n]);
sequence[0][n+1] = parts[2];
sequence[0][n+2] = parts[3];
n+=3;
parts = [];
}
注意n
初始化为0,objData
的每个元素都是一个字符串,形式如下:
objData[0] = "v 2.11733 0.0204144 1.0852"
我希望通过使用空格作为分隔符来拆分这些字符串(来自 objData
的每个元素)并将十进制值复制到 sequence
的第一行。我还想将这些字符串值解析为浮点数。
使用上面的代码复制值,但是 sequence
第一行的内容看起来像:
[2.11733NaN, 0.0204144NaN, 1.0852NaN, 2.12303undefined, 0.0131256undefined ..... etc.]
其余元素都附加了 'undefined',如图所示。
我尝试使用以下行解析为浮点数:
parts = objData[i].split(' ').map(parseFloat);
然而 sequence
的内容是:
[2.11733, 0.0204144, 1.0852, NaN, NaN ..... etc.]
如果有人能告诉我如何拆分和解析这些数据,我们将不胜感激!谢谢。
在我看来,你正在做这方面的工作。
让我们一步一步来:
// Make sure sequence array is empty
sequence = [];
// We want to process each element of the objData array :
objData.forEach (function (obj_n) {
// First split the element, one or more spaces separate fields
obj_n = obj_n.split (/ +/); // obj_n is now an array
// Extract elements 1 to 3
obj_n = obj_n.slice (1, 4); // obj_n is now the three data values
// Append the three elements to the sequence array:
sequence = sequence.concat (obj_n);
});
// Now convert to numbers:
sequence = sequence.map (function (f) { return +f });
更紧凑:
sequence = [];
objData.forEach (function (obj_n) {
sequence = sequence.concat (obj_n.split (/ +/).slice (1, 4));
});
sequence = sequence.map (function (f) { return +f });
回答 o.p 中的附加限制。下面的评论
function parseObjData (objData, m, n) { // Add n items to sequence m
if (!sequence[m]) // make sure sequence[m] exists
sequence[m] = [];
objData.forEach (function (obj_n) {
sequence[m] = sequence[m].concat (obj_n.split (/ +/).
slice (1, n + 1));
});
sequence[m] = sequence[m].map (function (f) { return +f });
}