【问题标题】:Javascript JQuery : Object doesn't support property or method 'toLowerCase'Javascript JQuery:对象不支持属性或方法“toLowerCase”
【发布时间】:2019-03-29 14:54:52
【问题描述】:

我正在使用带有 Crossfilter 的 Javascript 构建仪表板。

我在 Jquery 中使用这个函数:

   // d3's JSON call to grab the JSON data
        d3.json("universe.json", function(error, data) {
          // used by d3's dateFormat to parse the date correctly
          var dateFormat = d3.time.format("%Y-%m-%dT%H:%M:%S");

          // add map markers to map layer
          data.forEach( function(d,i) {

            d.date_e = dateFormat.parse(d.date_entered);
            d.date_i = dateFormat.parse(d.date_issued);


          });


  var tableDimension = xdata.dimension(function(d) {
  return d.pop.toLowerCase() + ' ' +
    d.City.toLowerCase() + ' ' +
    d.Province.toLowerCase() + ' ' +
    d.zip.toLowerCase() + ' ' +
    d.ward.toLowerCase();
});

这是我的数据样本:

错误:SCRIPT438:对象不支持属性或方法“toLowerCase”

我正在使用最新版本的 JQuery:https://github.com/jquery/jquery-ui/blob/master/external/jquery-2.0.2/jquery.js

[
  {
    "KMIST_TEMP_ID": "KTMPVN12119",
    "ID POP": "",
    "type": 2018,
    "pop": "No",
    "name": "Nha Thuoc An Binh",
    "Country": "",
    "Province": "Ho Chi Minh Province",
    "City": "Ho Chi Minh",
    "zip": "Thu Duc",
    "ward": "Linh Trung",
    "name_full": "Ho Chi Minh ,Nha Thuoc An Binh ,Thu Duc, Linh Trung",
    "latitude": 10.8539167,
    "longitude": 106.7716921,
    "geo": "106.7716921,10.8539167",
    "amenity": "pharmacy",
    "date_entered": "2015-10-30T00:00:00",
    "date_issued": "2015-10-30T00:00:00"
  }
]

有什么想法吗?

【问题讨论】:

  • 如果你在 xdata.dimension 中使用 console.log(d),你会看到什么?
  • 我不知道你用的是哪个存档,但最新的 jQuery 是 3.3.1

标签: javascript jquery d3.js dc.js crossfilter


【解决方案1】:

您好,如果您的 d 是您作为示例数据编写的整个对象,那么它是一个数组。因此您必须使用索引来操作数据。

var tableDimension = xdata.dimension(function(d) {
  return d[0].pop.toLowerCase() + ' ' +
    d[0].City.toLowerCase() + ' ' +
    d[0].Province.toLowerCase() + ' ' +
    d[0].zip.toLowerCase() + ' ' +
    d[0].ward.toLowerCase();
});

如果不是这样,那么一切看起来都合适。尝试一一删除 .toLowerCase() 并检查它在哪里出错。

【讨论】:

    【解决方案2】:

    尝试使用 d ["pop"] 代替 d.pop 并使用所有键。恐怕javascript不会在您的键和字典功能之间产生差异。

    【讨论】:

      猜你喜欢
      • 2018-01-11
      • 2013-03-23
      • 1970-01-01
      • 2015-11-21
      • 2011-02-02
      • 1970-01-01
      • 1970-01-01
      • 2017-07-10
      • 1970-01-01
      相关资源
      最近更新 更多