Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
拆分字符串数组后未定义(JavaScript)_Javascript_Parsing_Split_Nan_Parsefloat - Fatal编程技术网

拆分字符串数组后未定义(JavaScript)

拆分字符串数组后未定义(JavaScript),javascript,parsing,split,nan,parsefloat,Javascript,Parsing,Split,Nan,Parsefloat,我希望将字符串数组(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]: " +

我希望将字符串数组(
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 = [];
}
我希望使用空格作为分隔符拆分这些字符串(来自
objData
的每个元素),并将十进制值复制到
序列的第一行。我还想将这些字符串值解析为浮点值

使用上面的代码将复制值,但是
序列第一行的内容如下所示:

[2.11733NaN, 0.0204144NaN, 1.0852NaN, 2.12303undefined, 0.0131256undefined ..... etc.]
其余的元素都附加了“undefined”,如图所示

我尝试使用以下行解析为浮点:

parts = objData[i].split(' ').map(parseFloat);
然而,
序列
的内容是:

    [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
为参数,以整数
m
递增
序列的行。为了对
objData
进行同样的分析并将其分配给
序列的每一行,该代码是否也可以应用于该行?例如,我如何实现这个等价物:
sequence[m][]=sequence[m][].concat(obj_n.split(+/+/).slice(1,4))
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 });
}