【问题标题】:How to read out the inner array length of a 2 dimensional array in javascript如何在javascript中读出二维数组的内部数组长度
【发布时间】:2021-04-17 13:52:12
【问题描述】:

我需要在我的应用程序中检测二维数组中的内部数组的长度。但不幸的是,它总是引发“TypeError:无法读取未定义的属性'长度'”错误。有没有人检测到错误?非常感谢

这是一个名为 currentNodeData 的 2d 数组(我通过以下命令得到这个 --> console.log(currentNodeData)):

这就是我想要接收内部数组长度的方式,它应该是 6:

console.log(currentNodeData[0].length);

这是错误:

【问题讨论】:

  • @VLAZ - 也许吧,尽管我们在摘要行中看到了 Array(6),但通常我们不会看到。不过,这还是符合症状的。 Rainer,你确定你的截图不是来自不同的运行然后错误是?
  • 旁注:JavaScript 没有多维数组。它有数组数组,它​​们不是一回事。但是假设currentNodeData 是一个包含另一个索引为0 的数组的数组,那么currentNodeData[0].length 是获取索引为0 的数组长度的正确方法。
  • Hmmmm .. 好的,感谢您的澄清,但是您如何解释 currentNodeData[0].length 在我的情况下不起作用?

标签: javascript arrays typeerror


【解决方案1】:

在你的情况下currentNodeData 是什么?

让我们回顾一下:

所以我们在数组里面有一个数组。

我们来命名吧:

const innerArray = [{id:1}, {id: 2}, {id: 3}, {id: 4}]
const outer = [innerArray];

外部数组将只有一个内部数组? 如是: 我们可以做下一件事:

outer[0].length // 4

或者我们可以使用flat()

outer.flat().length // 4

const innerArray = [{id:1}, {id: 2}, {id: 3}, {id: 4}]
const outer = [innerArray];

console.log(outer[0].length);
console.log(outer.flat().length);

此外,我们应该了解您的变量可以异步分配,在这种情况下,当您尝试获取长度时,您的变量可能为空。

让我们尝试重现:

在这个例子中,我们可以看到一个错误,因为数据还没有分配

let outer = []; 
setTimeout(() => {outer = [[{id:1}]]}, 1000)
console.log(outer[0].length)

在这种情况下,我们应该添加Optional chaining operator?. 并且第一次我们会看到undefined,分配数据的时候再检查一下,就会看到length

let outer = []; 
setTimeout(() => {outer = [[{id:1}]]}, 1000)
console.log(outer[0]?.length)
setTimeout(() => {console.log(outer[0]?.length)}, 1000)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-29
    • 1970-01-01
    • 2011-11-14
    • 1970-01-01
    相关资源
    最近更新 更多