为什么这个Array作为Native Code而不是Object返回?

时间:2017-10-12 00:53:07

标签: javascript jquery arrays object autosuggest

我有一个名为autosuggest_results的数组,用于Typeahead。当我将文本输入到表单字段时,autosuggest会填充信息。但是,我注意到当我输入" POP"时,我收到错误"无法读取长度未定义的属性" ...我注意到如果我输入其他JavaScript方法名称(例如Push, concat)发生错误。

为什么以下内容返回"函数pop(){[native code]}"当我进入" POP"?如果我进入"测试"例如,它返回" [object Object]"

autosuggest_results [修剪($(autosuggest_active_field).VAL())。toLowerCase()]

1 个答案:

答案 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()