javascript - 如何迭代 3-d 数组的长度
问题描述
如果我有这样的数组:
data= [[[22127.0, 2611.0, 20, 'call', 'san'], [1568.0, 1234.0, 20, 'sales-data-allocation', 'san'], [586404.0, 20449.0, 20, 'professional', 'san'], [290715.0, 15526.0, 20, 'metrics', 'san'], [279549.0, 24066.0,
20, 'hospital', 'san'], [150256.0, 15417.0, 20, 'dcr', 'san'], [112073.0, 12136.0, 20, 'coaching', 'san'], [951.0, 79.0, 20, 'event', 'san'], [25453.0, 9575.0, 20, 'tth-appeal', 'san'], [25402.0, 2296.0, 20, speaker-dcr', 'san'], [15791.0, 6943.0, 20, 'product', 'san'], [2793.0, 1745.0, 20, 'advice', 'san']],
[[3361925.0, 28775.0, 20, 'call', 'd'], [20391.0, 15698.0, 20, 'professional', 'd'], [11824.0, 378.0, 20, 'hospital', 'd'], [905.0, 9194.0, 20, 'dcr', 'd'], [13247.0, 365.0, 20, 'metrics', 'd']],
[[3512274.0, 6177.0, 20, 'sales-data-allocation', 'yi'], [10.0, 212611.0, 20, 'call', 'yi'], [3656.0, 4377.0, 20, 'event', 'yi'], [57382.0, 3721.0, 20, 'professional', 'yi'], [1277.0, 361.0, 20, 'hospital', 'yi'], [13759.0, 1251.0, 20, 'dcr', 'yi'], [10044.0, 1588.0, 20, 'metrics', 'yi'], [3223.0, 14210.0, 2, 'product', 'yi'], [2921.0, 261.0, 20, 'coaching', 'yi'], [512.0, 315.0, 20, 'speaker-dcr', 'yi']]]
我怎样才能得到这个数组的长度?
解决方案
如果您知道它是 3d,请.flat(2)
在此处使用参考
const data = [
[
[22127.0, 2611.0, 20, 'call', 'san'],
[1568.0, 1234.0, 20, 'sales-data-allocation', 'san'],
[586404.0, 20449.0, 20, 'professional', 'san'],
[290715.0, 15526.0, 20, 'metrics', 'san'],
[279549.0, 24066.0, 20, 'hospital', 'san'],
[150256.0, 15417.0, 20, 'dcr', 'san'],
[112073.0, 12136.0, 20, 'coaching', 'san'],
[951.0, 79.0, 20, 'event', 'san'],
[25453.0, 9575.0, 20, 'tth-appeal', 'san'],
[25402.0, 2296.0, 20, 'speaker-dcr', 'san'],
[15791.0, 6943.0, 20, 'product', 'san'],
[2793.0, 1745.0, 20, 'advice', 'san']
],
[
[3361925.0, 28775.0, 20, 'call', 'd'],
[20391.0, 15698.0, 20, 'professional', 'd'],
[11824.0, 378.0, 20, 'hospital', 'd'],
[905.0, 9194.0, 20, 'dcr', 'd'],
[13247.0, 365.0, 20, 'metrics', 'd']
],
[
[3512274.0, 6177.0, 20, 'sales-data-allocation', 'yi'],
[10.0, 212611.0, 20, 'call', 'yi'],
[3656.0, 4377.0, 20, 'event', 'yi'],
[57382.0, 3721.0, 20, 'professional', 'yi'],
[1277.0, 361.0, 20, 'hospital', 'yi'],
[13759.0, 1251.0, 20, 'dcr', 'yi'],
[10044.0, 1588.0, 20, 'metrics', 'yi'],
[3223.0, 14210.0, 2, 'product', 'yi'],
[2921.0, 261.0, 20, 'coaching', 'yi'],
[512.0, 315.0, 20, 'speaker-dcr', 'yi']
]
];
function getArrayDepth(value) {
return Array.isArray(value) ?
1 + Math.max(...value.map(getArrayDepth)) :
0;
}
const arrayDepth = getArrayDepth(data);
console.log(data.flat(arrayDepth-1).length);
更新:
如果您不知道它是 3d,则必须先计算出数组的深度,然后从中减去 1。在更新的答案中,我使用了此答案中采用的方法。
推荐阅读
- ios - 在 iOS 上,我的绝对元素仅在转换为视图时显示到页面的高度
- c# - 为人员列表生成 RDLC 报告
- android - 更新gradle后Android单元测试无法解析被测类
- c# - C# 构造函数共享代码,然后引用已设置的属性
- r - 有没有办法将 CSV 文件从 Google Drive 直接读取到 R 中而无需在本地下载文件?
- visual-studio - CMake set_property 命令与生成器表达式使用构建类型
- powershell - 如何更新 catch 块中的 Foreach-Object 属性
- java - 在网络管理器的直接 dbus 控制中模拟 nmcli --ask
- math - 获取具有三角形质心的 90 度形状的顶点值
- php - ZipArchive ExtractTo() 权限被拒绝