【问题标题】:Updating an array based on randomly generated index根据随机生成的索引更新数组
【发布时间】:2020-08-20 22:57:09
【问题描述】:

我对 Javascript 和 jQuery 非常陌生。我正在尝试创建一个电影列表,该列表将从列表中随机选择一个项目,发布结果,然后从原始列表中删除该项目。它使用文本输入、.push 和 .append 来跟踪列表并更新匹配文本的数组。我的想法是我会使用一个与 ul 匹配的数组从其长度生成一个随机索引号,然后使用该数字通过索引从 ul 中删除 li。基本思想是有效的。我的问题是,每次它从列表中选择一个项目时,它从数组中删除的项目与它发布和从 ul 中删除的项目不同。这些部分似乎可以单独工作,直到我在一个绑定到按钮的函数中运行它们。

这是我正在使用的代码。只要接受文本以更新 ul,watchList 数组就会填充 .push。我检查过,两者的索引都匹配。

function randomShow(){
var r = Math.floor(Math.random() * watchList.length);
for(var i = 0; i < watchList.length; i++){
    if(i === r) {
            alert(watchList[i]);
            watchList.splice(watchList.indexOf[i],1);
            $("li").eq(i).remove();

        }
    }

}

【问题讨论】:

  • watchList.indexOf(i) 你可以摆脱代码中的循环,这是没有意义的。
  • 是的。我发现循环没用。其他人建议我尝试一下,因为我对编码真的很陌生,所以我试了一下。我修好了它。您的建议很接近,但绝对为我指明了正确的方向!我删除了循环并完全删除了 indexOf 。 - watchList.splice(r,1); -

标签: javascript jquery arrays random html-lists


【解决方案1】:

我认为你不需要循环。试试这个;

function randomShow(){
   var r = Math.floor(Math.random() *watchList.length);
   $("li").eq(r).remove();
}

【讨论】:

  • 谢谢。我在尝试循环之前尝试过。他们都得到相同的结果。现在它从列表中删除并发布正确的项目,但在运行拼接时从数组中删除错误的项目,这使得它在一次使用后变得无用。我觉得每次调用 r 时它都运行一个单独的 r 实例,而不是将同一个实例传递给两者。有没有办法根据列表的长度提取索引,同时打印该索引的文本内容?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-31
  • 2020-10-13
  • 2021-09-26
  • 2014-02-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多