【问题标题】:Access to an object of an object访问对象的对象
【发布时间】:2021-11-23 21:28:29
【问题描述】:

我正在使用 Datamaps 插件,并且正在尝试访问另一个对象中的对象。

这里我想在options中获取data的所有值。请看console.log回答下面的截图。

这里是 js:

var map = new Datamap({
  scope: "fra",
  element: document.getElementById("map-france"),
  responsive: true,
  fills: {
    defaultFill: "#EDE8D6",
    "1-50": color_dept[4],
    "51-100": "#EDE8D6",
    "101-150": "#E2DABF",
    "151-200": "#CEC191",
    "201-300": "#BCAE7C",
    "301-400": "#9D893E",
    "401-": "#827131",
  },
  data: {
    YV: {
      fillKey: "#EDE8D6",
    },
    AM: {
      fillKey: "51-100",
    },
  },
  geographyConfig: {
    popupTemplate: function (geo, data) {
      for (const val of uniqueValues) {
        if (geo.properties.name == val) {
          return [
            '<div class="hoverinfo"><strong>',
            val,
            "<br/>",
            dataValues.filter((v) => v == val).length,
            " parrainages",
            "</strong></div>",
          ].join("");
        }
      }
    },
    hideAntarctica: true,
    hideHawaiiAndAlaska: false,
    borderWidth: 1,
    borderOpacity: 1,
    borderColor: "#D2D3B5",
    popupOnHover: true, // True to show the popup while hovering
    highlightOnHover: true,
    highlightFillColor: "#1E2382",
    highlightBorderColor: "#FFFFFF",
    highlightBorderWidth: 1,
    highlightBorderOpacity: 1,
  },
  setProjection: function (element) {
    var projection = d3.geo
      .mercator()
      .center([2.454071, 46.279229])
      .rotate([0, 0])
      .scale(1700)
      .translate([350, 225]);
    var path = d3.geo.path().projection(projection);

    return {
      path: path,
      projection: projection,
    };
  },
});


Object.entries(map).map((item) => {
  console.log("item 1 : ", item);
});

【问题讨论】:

  • 你不需要使用map(),你可以尝试登录map.data吗?
  • 什么是Datamap
  • @Rojo 这是一个地图插件
  • 您能提供一个指向它的 github 存储库的链接吗?
  • @AzizaKasenova,未定义:Object.entries(map).map((item) =&gt; { console.log("item 1 : ", map.data); });

标签: javascript for-loop object


【解决方案1】:

例如

const mapExample = new Map()

mapExample.set("test", 
{"nestedObj":{"newObject":"new Obj value"}})

现在,在此之上映射将为您提供一个包含顶级对象“test”的数组

获取“newObject”的嵌套值的值:

Object.entries(mapExample.get("test")).map(i=> console.log(i[1].newObject))

Object.entries(mapExample.get("test")).map(i=> {
  let [key,value] = i
  console.log(key,value)
});

可以将其复制并发布到 chrome 控制台中并对其进行处理,以查看不同的结果。

但关键采取方式是 Object.entries 以 ["key":"value"] 顺序返回您的对象数组。

【讨论】:

  • 它给了我一个错误:Uncaught TypeError: map.get is not a function
  • 对答案的Map 使用与OP 现有的Datamap 变量相同的变量名称可能是个坏主意。
  • @HereticMonkey,感谢您的评论,我更改了它,但错误仍然存​​在:Uncaught TypeError: mapdata.get is not a function Object.entries(mapdata.get("options")).map((i) =&gt; { let [key, value] = i; console.log(key, value); });
  • 那么前面的代码有问题。也许Map 已被其他代码覆盖,不再引用Map 对象中内置的标准,该对象具有get 方法@MeryemACHEMLAL。
  • @MeryemACHEMLAL,在示例中我使用了 Map 数据结构,因为我假设您的自定义类是 Map() 类型,因为它是如何命名的。但是对于像您的示例这样的常规对象。如果我想获得 YV 和 AM 的值: Object.entries(mapData.data).map(i=> { let [key,value] = i console.log(value.fillKey) });会给你价值
猜你喜欢
  • 1970-01-01
  • 2016-06-13
  • 2011-11-02
  • 1970-01-01
  • 1970-01-01
  • 2019-04-23
  • 2013-01-29
  • 2021-07-12
  • 1970-01-01
相关资源
最近更新 更多