JavaScript中如何创建指定索引范围的多索引布尔类型多维数组
JavaScript 实现指定维度随机布尔值三维数组
JavaScript 没有原生多维数组类型,通过嵌套数组即可实现你需要的三维结构,索引范围、随机布尔值填充的要求都可以直接通过标准API实现。
核心实现代码
// 各维度索引上限常量 const index1 = 2 const index2 = 20 const index3 = 18 // 生成三维数组,每层长度为「索引上限+1」(索引从0开始计数,包含上限值) const storage = Array.from({ length: index1 + 1 }, () => Array.from({ length: index2 + 1 }, () => Array.from({ length: index3 + 1 }, () => Math.random() < 0.5) ) )
代码生成的数组维度完全匹配需求:
- 第一维长度为3,索引范围0~2
- 第二维长度为21,索引范围0~20
- 第三维长度为19,索引范围0~18
- 所有元素为
true/false的概率各50%,满足随机布尔值要求
访问方式
注意JS原生语法不支持方括号内用逗号分隔多个索引的写法(storage[a,b,c]会被逗号运算符解析为取索引c的值,不符合预期),常规访问通过逐层方括号取值即可,和你需要的索引逻辑完全对应:
// 访问示例 storage[0][0][0] // 对应逻辑上的 storage[0,0,0],返回随机布尔值 storage[0][0][1] // 对应 storage[0,0,1] storage[2][20][18] // 对应 storage[2,20,18]
可选:适配逗号分隔索引的访问形式
如果你一定要匹配storage[x,y,z]的书写形式,可以通过Proxy封装一层,把逗号分隔的字符串键映射到三维数组的对应位置:
// 基于前面生成的三维数组做代理封装 const storageProxy = new Proxy({}, { get(_, propKey) { const [i1, i2, i3] = String(propKey).split(',').map(Number) return storage[i1]?.[i2]?.[i3] } }) // 之后可以用如下形式访问,注意索引要写成字符串形式 storageProxy['0,0,0'] storageProxy['2,20,18']
这种封装会带来额外的性能开销,非必要不推荐使用。
内容的提问来源于stack exchange,提问作者raullink
相关产品推荐
相关产品推荐

