You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

开发分形子对象按层、行列ID获取绝对ID的函数

分形子对象绝对ID计算函数开发需求

核心需求

  • 开发函数,通过**层/行ID(rowId)与列ID(colId)**获取分形子对象的绝对ID
  • 分形层级规则:每个上层对象包含7个下层对象,层级标识依次为W→G→N→T(标识可自定义,实际对应行星、太阳系、星系等)
  • 层统计规则:层3(rowId=2)仅统计N标识对象,层2(rowId=1)仅统计G标识对象

原始数据与上下文

const rawData = [["W1","W2","W3","W4","W5","W6","W7"],
  ["G1","G2","G3","G4","G5","G6","G7"],
  ["N1","N2","N3","N4","N5","N6","N7"],
  ["T1","T2","T3","T4","T5","T6","T7"]]
  
const selIds=[0,1,2,4] // 对应选中的W1、G2、N3、T5的索引(每个元素取值范围[0-6])

// 点击事件输入参数示例
rowId=1 // 层索引-1(取值范围0-6)
colId=2 // 元素索引-1(取值范围0-6)

点击子对象时,selIds会根据当前rowId和colId更新,例如上述示例中点击后selIds更新为[0,2,2,4]

计算逻辑示例

result=((7^1*selIds[0])+selIds[1]*7^0)*7^(rowId+1)+3=(0+1)*49+3=52

现有实现函数

const getCurrentIndex = function(elementIndex, layerIndex) {
    let currentIndex = 0
    if(layerIndex > 0) {
        for(let j = 0; j < layerIndex; j++) {
            currentIndex += (selIds[j]) * Math.pow(7, layerIndex-j)
        }
    }

    currentIndex += elementIndex
    currentIndex += 1
    return currentIndex
}

验证示例(层/行 & 元素/列 = 绝对ID)

W1:G1:N1:T1 = 1
W1:G1:N1 = 1
W4:G5:N6 = 3*7*7 + 4*7 + 6 = 181
W2:G2:N3 = 1*7*7 + 1*7 + 3 = 59
W3:G4:N3 = 2*7*7 + 3*7 + 3 = 122
W4:G4:N4 = 3*7*7 + 3*7 + 4 = 172
W2:G2:N3:T4 = 1*7*7*7 + 1*7*7 + 2*7 + 4 = 410

注:列ID为按:分割后最后一个字符串的数字部分

内容的提问来源于stack exchange,提问作者koji0285

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 00:27:03