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

从XML迁移到JSON后,如何优雅过滤生物地形数据数组?

优雅过滤JSON数组的方案

完全不用switch/case,利用JavaScript对象的动态属性访问特性就能实现和原来XML逻辑一致的优雅过滤,代码比之前更简洁:

核心实现代码

// 假设 creaturesJsonArray 是你的JSON格式生物数组
// selectedTerrain 是从单选框获取的选中值(比如"Desert"、"Woods")
const filteredCreatures = creaturesJsonArray.filter(creature => {
  // 先检查对象是否包含该属性,避免非预期报错
  return creature.hasOwnProperty(selectedTerrain) && creature[selectedTerrain] === true;
});

为什么这比switch/case好?

  • 和原来XML的动态选择节点逻辑完全匹配:都是根据选中的地形值,直接定位到对应的属性进行判断
  • 扩展性强:以后新增地形类型(比如"Ocean"),不用修改过滤代码,只要JSON结构和单选框值对应上就行
  • 代码更简洁,逻辑清晰,没有冗余的分支判断

额外说明

如果担心单选框的值和JSON属性名可能存在大小写不匹配的情况,可以提前做一次统一转换:

const normalizedTerrain = selectedTerrain.trim().toLowerCase();
const filteredCreatures = creaturesJsonArray.filter(creature => {
  // 转换为JSON属性的首字母大写格式
  const terrainKey = normalizedTerrain.charAt(0).toUpperCase() + normalizedTerrain.slice(1);
  return creature.hasOwnProperty(terrainKey) && creature[terrainKey] === true;
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 14:16:15