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

Typeahead报错TypeError: b.toLowerCase() is not a function求助

解决Typeahead报错TypeError: b.toLowerCase() is not a function

这个错误我之前也碰到过,原因很明确——Typeahead 默认期望你的 source 是字符串数组,但你传入的数据01是对象数组,当它尝试对对象调用toLowerCase()方法时自然就报错了,毕竟对象没有这个方法。而数据02能正常运行,应该是因为它本身就是字符串数组,符合Typeahead的默认处理逻辑。

下面给你两种可行的解决办法:

方法1:配置Typeahead识别对象中的显示字段

如果需要保留对象数据(比如后续要用到对象里的其他属性),可以通过display选项告诉Typeahead用对象的哪个字段作为显示文本:

$.get(serviceCompanyAll, function(data) { 
  $('.typeahead-2').typeahead({ 
    source: data,
    // 方式一:用函数返回显示文本(适合需要处理字段的场景)
    display: function(item) {
      return item.compName; // 替换成你数据里实际要显示的字段名,比如公司名称字段
    }
    // 方式二:直接指定字段名(更简洁,字段固定时用)
    // display: 'compName'
  }); 
}, 'json');

方法2:将对象数组转换为字符串数组

如果只需要显示文本,不需要保留对象的其他属性,可以提前把对象数组转换成字符串数组:

$.get(serviceCompanyAll, function(data) { 
  // 提取每个对象里的显示字段,生成纯字符串数组
  var sourceData = data.map(function(item) {
    return item.compName; // 替换成实际要显示的字段名
  });
  $('.typeahead-2').typeahead({ 
    source: sourceData
  }); 
}, 'json');

你只需要根据自己的业务需求选择其中一种方式,把代码里的compName替换成你数据01中实际要显示的字段(比如你示例里的"comp..."对应的完整字段名),就能解决这个报错啦。

内容的提问来源于stack exchange,提问作者Sikandar Sahab

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 04:09:48