TypeError:无法读取未定义的属性“子字符串”

时间:2018-07-18 19:30:49

标签: node.js

写在node.js文件中

该函数返回错误:

  

返回ACE职业展览标识符

原始ID示例:46R-002-30BroadJour12_01-12_11

预期产量:46R-002

/*This function is returning the error:
Cannot read property 'substring' of undefined*/
function splitID(originalID){
  var aceid = originalID.substring(0,7);
  return aceid;
}

//1. Get the ace exhibit occupation id for each of them and put it in a parallel array.
for (var row in values) {
  //split the 5th column using our function
  var output = splitID(row[4]);
  var result = getOccupation(output);
  //now we add the split output to our occupation array.
  occupationsToInsert.append(result);
}

2 个答案:

答案 0 :(得分:0)

如果您可以参考MDN上的文档here,则建议不要使用for...in来遍历数组,因为它在返回时不会给出一致的值。而是迭代传递给它的相关对象的enumerable属性。

换句话说,for (var row in values)不会像预期的那样遍历每个单独的行,而是values列表的可枚举属性。

因此,对于您的const数组,只需执行以下操作即可找到可枚举的属性

Object.getOwnPropertyNames(values)

将返回以下列表:

["0", "length"]

您实质上是在尝试访问该数组的第四个元素,该元素不存在,因此未定义,从而导致您观察到错误。

答案 1 :(得分:-1)

错误告诉您确切的问题:originalID未定义。在您的for循环中,row[4]导致未定义的值。验证您的values数组是否包含您所期望的内容。