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

JavaScript for循环生成Datamaps所需fillKey映射对象问题排查

问题修复方案

核心错误原因

  • 未初始化对象嵌套属性:data_color为普通对象,data_color[myJson_departement_list[x]["code_dept"]]默认是undefined,直接给其fillKey赋值会抛出异常,生成错误结构
  • 区间判断边界遗漏:现有判断逻辑未覆盖等于50/51/100等边界值,会导致部分值匹配到错误区间
  • 你猜测的interval需要额外加引号的问题不成立,JS中字符串变量本身自带字符属性,赋值时会自动处理,不需要额外添加引号

修正后完整代码

import departement_list from "../data/departements-region.json";
// 此处深拷贝如果没有修改原导入对象的需求可以直接删除
let myJson_departement_list = JSON.parse(JSON.stringify(departement_list));
let data_color = {};

for (let x in myJson_departement_list) {
  let dept_item = myJson_departement_list[x];
  let dept_name = dept_item["dep_name"];
  let total_parrainage = departement[dept_name] ?? 0; // 加兜底避免undefined导致的判断错误

  dept_item["total_parrainages"] = total_parrainage;

  let interval = "401-";
  if (total_parrainage <= 0) {
    interval = "defaultFill";
  } else if (total_parrainage <= 50) {
    interval = "1-50";
  } else if (total_parrainage <= 100) {
    interval = "51-100";
  } else if (total_parrainage <= 150) {
    interval = "101-150";
  } else if (total_parrainage <= 200) {
    interval = "151-200";
  } else if (total_parrainage <= 300) {
    interval = "201-300";
  } else if (total_parrainage <= 400) {
    interval = "301-400";
  }

  // 正确赋值方式:直接给省份code对应的key赋值完整对象
  data_color[dept_item["code_dept"]] = {
    fillKey: interval
  };
}

验证方式

循环执行完成后打印console.log(data_color),即可看到符合要求的结构:

{
  AI: { fillKey: "defaultFill" },
  AS: { fillKey: "1-50" },
  // 其余省份对应数据
}

直接将该data_color传入Datamaps的data配置项即可正常渲染地图。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 04:06:03