调用警报(array.length)时JavaScript未定义

调用警报(array.length)时JavaScript未定义,javascript,list,Javascript,List,最近我一直在尝试创建一个带有搜索功能的网页。我的实现方式虽然不是最快或最优雅的,但在理论上应该是可行的。它所做的只是将搜索词拆分为一个列表,分隔符是一个空格,然后以字典格式拆分关键字,值是一个下载链接,键是我所指的关键字,最后,它有一个外循环,通过每个迭代将键拆分为一个列表,以及通过输入字段输入的单词循环的内部循环。如果搜索字段中的一个单词与关键字列表中的一个关键字匹配,则字典中的该关键字的得分为+1 这应该按照从最佳到最差的顺序对键进行排序,然后代码可以继续处理所有这些信息,并显示可下载文件的

最近我一直在尝试创建一个带有搜索功能的网页。我的实现方式虽然不是最快或最优雅的,但在理论上应该是可行的。它所做的只是将搜索词拆分为一个列表,分隔符是一个空格,然后以字典格式拆分关键字,值是一个下载链接,键是我所指的关键字,最后,它有一个外循环,通过每个迭代将键拆分为一个列表,以及通过输入字段输入的单词循环的内部循环。如果搜索字段中的一个单词与关键字列表中的一个关键字匹配,则字典中的该关键字的得分为+1

这应该按照从最佳到最差的顺序对键进行排序,然后代码可以继续处理所有这些信息,并显示可下载文件的链接。网页的目的是提供旧软件的下载[我多年来收集的]等。。但是,当我运行程序时,无论何时调用alertranking.length函数,我得到的所有结果都是在输出窗口中未定义的

这是代码。只要按下搜索按钮,就会调用搜索功能:

var kw_href={ windows:[windows3.1.7z], ms dos 6.22:[ms dos 6.22.7z] } 函数搜索{ var element=document.getElementByIdsearch\u区域; var search_term=element.value.toLowerCase; var s_tags=搜索_term.split; var keys=Object.keyskw\u href; 排名={ windows:0, ms dos 6.22:0 }; 对于i=0;iranking是一个通用对象,而不是数组,因此它没有计算长度属性


如果要计算其中的属性数,请将其转换为具有Object.keysranking的数组。

排序应该是类似对象的数组ranking=[{windows:0,ms dos 6.22:0},{windows:1,ms dos 6.22:10}]
那么长度排序。长度将起作用

排序是一个对象,因此它没有长度属性no,因为我没有试图找到长度-这是一个测试,以确定排序算法是否有效。@sciencepiofficial您希望得到什么值?希望是2,因为它应该用分数将两个关键字添加到列表中。所以您想得到对象中的关键字数?在这种情况下,副本是正确的。ranking应该是对象数组,然后ranking.length将正常工作