我有一个名为autosuggest_results的数组,用于Typeahead。当我将文本输入到表单字段时,autosuggest会填充信息。但是,我注意到当我输入" POP"时,我收到错误"无法读取长度未定义的属性" ...我注意到如果我输入其他JavaScript方法名称(例如Push, concat)发生错误。
为什么以下内容返回"函数pop(){[native code]}"当我进入" POP"?如果我进入"测试"例如,它返回" [object Object]"
autosuggest_results [修剪($(autosuggest_active_field).VAL())。toLowerCase()]
答案 0 :(得分:0)
刚刚在评论中看到更多信息后
在声明autosuggest_results
的地方,需要将其声明为对象,而不是数组
var autosuggest_results = {};
您的原始代码将会很好
autosuggest_results
是ARRAY ... autosuggest_results['pop']
是数组的pop 方法 ...即autosuggest_results.pop
...胁迫a(字符串的本机方法导致类似字符串
function pop() {
[native code]
}
你可能想要的是
var arrayOfResults = autosuggest_results.filter(v => ~v.indexOf(trim($(autosuggest_active_field).val()).toLowerCase()))
arrayOfResults将是autosuggest_results
中的一个项目数组,其中包含(字符串中的任何位置,而不是完全匹配)
trim($(autosuggest_active_field).val()).toLowerCase()