【问题标题】:Length of Multidimensional Arrays - Cannot read property 'length' of null多维数组的长度 - 无法读取 null 的属性“长度”
【发布时间】:2014-10-12 23:18:17
【问题描述】:

我在尝试运行以下循环时遇到问题。

function syllCount(array){
    for (i = 0, x = phonemeArray.length; i < x; i++){
      sylls.push(phonemeArray[i].match(/\d/g));
      syllArray.push(sylls[i].length);
  }
}

每个 phonemeArray 元素看起来像这样:“AE0 B S K AA1 N D AH0 D”,因此推送到音节(一个空数组)的输出将是 [0, 1, 0]。但是,当我尝试在此元素上调用由 sylls[i] 表示的 length 方法时,我收到错误“无法读取 null 的属性 'length'”。有没有办法让这个循环获取每个已推送到 sylls 的数组的长度,然后将结果推送到 syllArray 数组?

谢谢。

【问题讨论】:

  • 在任何事情之前,请将i = 0 更改为var i = 0,否则您将声明一个全局变量。
  • 音节从何而来?
  • 你有没有将任何东西声明为变量?您凭空提取 phonemeArray、sylls 和 syllArray,而您的函数接受一个名为 array 的参数,它什么都不做?我觉得这不是完整的代码,您能否包括所有必要的问题,或者包括一个 jsfiddle (jsfiddle.net)
  • 我已经在这个函数上面声明了一个空数组,但是如果我在这个函数里面声明它的结果是一样的。
  • ctwheels - 抱歉,这只是我的代码的 sn-p。 phonemeArray、sylls 和 syllArray 都是先前声明的。我在下面调用这个函数,以 phonemeArray 作为参数。

标签: javascript arrays loops multidimensional-array null


【解决方案1】:

我误读了这个问题,所以刚刚开始回答,所以并不长。

基于your JSFiddle,这是我想出的:

function syllCount(p) {
    var sylls = [];
    for (var i = 0; i < p.length; i++) {
        sylls.push(p[i].match(/\d/g));
        syllArray.push(sylls[i].length);
        count++;
    }
}

我制作了一个example JSFiddle,大致基于您的外观。如果我再次错过了标记,请告诉我。

【讨论】:

  • 不是我的反对意见,但我不确定这是我要找的。我首先将匹配数组从 phonemeArray[i] 推送到 sylls 数组,然后尝试将 sylls[i] 的长度推送到 syllArray 数组。所以我会有三个长度相同的数组,一个是音素,一个是匹配数字的数组,一个是匹配数字的数量。
  • 问题只是在 sylls 数组上调用长度。当我记录音节时,它会输出如下内容: [[ '1', '0', '0' ], [ '1', '0', '0' ], [ '1', '0', ' 0'],['1','0','0'],['0','1','0'],['1'],['1','1'],[' 1', '0', '1' ], [ '1', '1' ], [ '1', '1' ] ] 但我无法在数组的这些元素上调用长度,因为它返回 null。
  • @fluidddynamics 在那里,我重写了答案,以便正确解决您的问题。
  • 好吧,这看起来确实是对的,但是当我在自己的代码中使用它时,我仍然收到错误“无法读取 null 的属性 'length'”。我认为这是我正在解析的文本的问题,而不是实际的代码。我的 sylls 数组中似乎有一个空值,这就是问题所在。如果我只是选择我的数据,则此解决方案有效。感谢您的帮助。
  • 用一个简单的 if !== null 语句搞定一切。再次感谢您的帮助!
猜你喜欢
  • 1970-01-01
  • 2023-03-11
  • 2013-03-21
  • 2015-04-06
  • 2019-08-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-27
相关资源
最近更新 更多