Javascript 如何根据频率对数组中的键进行排序

Javascript 如何根据频率对数组中的键进行排序,javascript,jquery,Javascript,Jquery,我的提交按钮终于起作用了。然而,它并没有计算结果中的所有选票。如何使用提交按钮对所有投票进行排序 HTML: 电影列表 我最喜欢的电影 进入 精选电影: 你是最好的电影: 提交 结果 Javascript: $(document).ready(function() { var films = []; // with working vote button $("#enter").click(function () { var movie = $("#m

我的提交按钮终于起作用了。然而,它并没有计算结果中的所有选票。如何使用提交按钮对所有投票进行排序

HTML:


电影列表
我最喜欢的电影
进入
精选电影:
你是最好的电影:
提交
结果
Javascript:

$(document).ready(function() {
    var films = [];
    // with working vote button
    $("#enter").click(function () {
        var movie = $("#movie").val();
        var $btn = $('<button />', {
            id: "vote",
            type: "button",
            text: "Vote",
            value: movie,
            click: function(){
                var vote = this.value;
                $("#best").append('<p>'+vote+'</p>');
                films.push(vote); 
            }
        });

        var $p = $('<p />');
        $p.append($btn, " ", movie);
        $p.appendTo("#list");
    });
});
$(文档).ready(函数(){
var=[];
//带工作投票按钮
$(“#输入”)。单击(函数(){
var movie=$(“#movie”).val();
变量$btn=$(''{
id:“投票”,
键入:“按钮”,
案文:“投票”,
价值观:电影,
单击:函数(){
var vote=该值;
$(“#最佳”)。追加(“”+投票+”

); 电影。推送(投票); } }); var$p=$(“

”); $p.append($btn,“,电影); $p.appendTo(“列表”); }); });

问题就在这里:

此代码应允许“提交”按钮在“您的最佳影片”下选择列出的影片,并按照投票顺序将其排列在“结果”下的第三个列表中

$("#submit").click(function () {
    var ballot = {};
    for (var i = 1; i < films.length; i++) {
        var key = films[i];
        ballot[key] = (ballot[key] || 0) + 1;
    }
    var elect = [];
    for (key in ballot) elect.push({key: key, freq: ballot[key]});
    elect.sort(function(a,b){return b.freq - a.freq});
    console.log(elect);
    for (var i = 0; i < elect.length; i++){
        console.log(elect[i].key);
        $("#results").append('<p>' + elect[i].key + '</p>');
    }
});
$(“#提交”)。单击(函数(){
var-ballot={};
对于(var i=1;i);
}
});
如有任何建议或想法,将不胜感激

$(“#提交”)。单击(函数(){
$("#submit").click(function () {
    var ballot = {};
    for ( var i = 0; i < films.length; i++) {
         var key = films[i];
        ballot[key] = (ballot[key] || 0) + 1;
        }
    var elect = [];
        for (key in ballot) elect.push({key: key, freq: ballot[key]});
    elect.sort(function(a,b){return b.freq - a.freq});
    console.log(elect);
    for (var j = 0; j < elect.length; j++){
        console.log(elect[j].key);
        $("#results").append('<p>' + elect[j].key + '</p>');
    }
var-ballot={}; 对于(var i=0;i”); }
它是否显示任何错误,因为我认为您有错误。我看到您为(var I=1;I,但您没有这样做
var films=document.querySelector(.flims”)
。没有错误。只是没有计算大多数选票,而不是全部选票。var films行会去哪里?好吧,那是因为你做了
电影。长度
当你没有所谓的电影时。电影数组就在$(“#enter”)上方。单击(函数(){如果是这样的话,你应该把错误的最后一部分放在里面,因为这样看起来它是分开的。
$("#submit").click(function () {
    var ballot = {};
    for ( var i = 0; i < films.length; i++) {
         var key = films[i];
        ballot[key] = (ballot[key] || 0) + 1;
        }
    var elect = [];
        for (key in ballot) elect.push({key: key, freq: ballot[key]});
    elect.sort(function(a,b){return b.freq - a.freq});
    console.log(elect);
    for (var j = 0; j < elect.length; j++){
        console.log(elect[j].key);
        $("#results").append('<p>' + elect[j].key + '</p>');
    }