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

暗黑破坏神2符文之语配方校验算法优化 基于用户库存筛选可制作符文之语

暗黑2符文之语匹配逻辑优化方案

核心优化思路

  • 提前将库存数组转换为键为符文名称、值为持有数量的哈希映射,将符文查询耗时从O(n)降到O(1),大幅提升批量校验效率
  • 用配方所需符文计数对比替代原实现中「深拷贝库存+逐符文扣减」的逻辑,省略深拷贝开销的同时也完全避免误改原始库存的风险
  • 用数组filter+every的流式调用替代原实现的循环+外置标记变量,逻辑更简洁可读,嵌套层级更低

优化后完整代码

calculatedRunewordList() {
    // 统计库存符文总数量,空库存直接返回全量符文之语
    const totalStock = this.getInventory.reduce((sum, item) => sum + item.value, 0)
    if (totalStock <= 0) return this.getRunewordList.map(runeword => runeword.name)

    // 生成库存符文映射表:{ 符文名称: 持有数量 }
    const stockMap = this.getInventory.reduce((map, item) => {
        map[item.name] = item.value
        return map
    }, {})

    // 筛选符合库存条件的符文之语
    return this.getRunewordList.filter(({ recipe }) => {
        // 统计当前配方各符文所需数量
        const requiredRunes = recipe.reduce((count, rune) => {
            count[rune] = (count[rune] || 0) + 1
            return count
        }, {})
        // 校验所有所需符文库存都满足要求
        return Object.entries(requiredRunes).every(([rune, needCount]) => stockMap[rune] >= needCount)
    }).map(runeword => runeword.name)
}

效果验证

你给出的测试用例运行后输出结果完全符合预期:
库存为[{name:'Tir',value:1},{name:'Ral',value:1},{name:'Tal',value:1},{name:'Sol',value:1},{name:'Ko',value:2},{name:'Mal',value:1}]时,返回结果为['Leaf', 'Prudence', 'Sanctuary', 'Insight']。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 00:36:01