D3:使用变量访问绑定数组中的对象

D3: Accessing Objects in Bound array using variables

本文关键字:数组 对象 绑定 访问 变量 D3      更新时间:2023-09-26

我正在尝试在地图上动画化月度数据。我把每个月的数据都存储在一个数组中,当我尝试像这样用:.data(data.January)绑定数据时,它就会起作用。但是,当使用用.data(data.monthName)选择的跟踪当前月份的变量时,它会在控制台中返回一个TypeError,并且不会呈现应用程序的其余部分。

我的猜测是我访问键值不正确,d3有一种独特的处理方式。

下面是不起作用的函数。(当滑块控制更改月份时,会触发update()。)

d3.json("data/avg_revisit.json", function(data) {
color.domain([20, 0]);
  function update() {
        var monthName = getMonthName(currentMonth);
        colored_bars.selectAll("rect")
          .data(data.monthName)
          .enter()
          .append("rect")
            .attr("width", getLandWidth())
            .attr("class", "bars")
            .attr("height", function(d) {
              return projection([0, d.latitude - 0.5])[1] - projection([0, d.latitude])[1];
            })
            .attr("opacity", 0.6)
            .style("fill", function(d) {
              //Get data value
              var value = d.average_revisit;
              if (value) {
                      //If value exists…
                      return color(value);
              } else {
                      //If value is undefined…
                      return "#ccc";
              }
             })
             //Define position of each rectangle by it's latitude from the data
            .attr("transform", function(d) {
              return "translate(" + projection([-180, d.latitude]) + ")"
            });
          }

使用data[monthName]而不是data.monthName。如果使用变量访问对象的键,则必须使用object[string variable]