【问题标题】:Why does this Array return as Native Code instead of Object?为什么这个数组返回本机代码而不是对象?
【发布时间】:2018-03-23 19:22:45
【问题描述】:

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

为什么当我输入“POP”时,下面的返回为“function pop() { [native code] }”?例如,如果我输入“Test”,它将返回“[object Object]”

autosuggest_results[trim($(autosuggest_active_field).val()).toLowerCase()]

【问题讨论】:

    标签: javascript jquery arrays object autosuggest


    【解决方案1】:

    刚刚在评论中看到更多信息后

    无论在哪里声明 autosuggest_results,都需要将其声明为对象,而不是数组

    var autosuggest_results = {};
    

    你的原始代码就可以了


    autosuggest_results 是一个 ARRAY ... autosuggest_results['pop'] 是数组的弹出 method ... 即它是 autosuggest_results.pop ... 将(本机)方法强制转换为字符串结果类似于字符串

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

    【讨论】:

    • 不要完全重构我的自动建议代码(我添加到原始帖子中),你会建议我做什么来允许 POP? .results.length 是 if 语句中返回错误的地方
    • 不确定你在做什么,我没有重构任何东西......你的代码正在寻找 autosuggest_results 的属性中的单词,而你应该查看中的值autosuggest_results
    • 你能解释一下 arrayOfResults 是做什么的吗?我想我不明白应该返回什么
    • 它是来自autosuggest_results 的与输入值匹配的字符串数组
    • 嗯,由于某种原因,数组返回空:/
    猜你喜欢
    • 2011-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-30
    • 1970-01-01
    • 2016-02-23
    • 2013-09-23
    • 1970-01-01
    相关资源
    最近更新 更多