【问题标题】:Array push does not do his job数组推送不起作用
【发布时间】:2021-04-08 10:13:51
【问题描述】:

为什么container.push(random[0]) 不起作用?

我找不到问题的解决方案...我需要将 HTML 对象放入容器数组中,但它并没有放在那里。

let container = new Array();
let x = document.querySelectorAll('.trigger');

function getFlag() {
  let random = [x[Math.floor(Math.random() * x.length)]];

  if (!container.includes(random[0])) {
    random[0].classList.remove('trigger');

    console.log('random n: ' + random[0]);
    container.push(random[0]);
  }
}

console.log('x length: ' + x.length)
console.log('array length: ' + container.length)
.trigger {
  display: none;
}
<body onload="getFlag()">
  <section class="trigger">
    <p>1</p>
  </section>
  <section class="trigger">
    <p>2</p>
  </section>
  <section class="trigger">
    <p>3</p>
  </section>
</body>

【问题讨论】:

  • 为什么你认为push 不起作用? &lt;section&gt; 元素 is 在最后的数组中。不要将所有内容连接到一个字符串;使用console.log("random n:", random[0]) 来测试您的价值观。使用console.log(container.slice()); 查看阵列的当前状态;我没有看到您在任何地方实际确认您的预期结果。 random 是一个数组并一直得到 random[0] 而不是 random 有什么意义?
  • 如果您指的是console.log('array length: ' + container.length)显示0而不是1,原因是console.log()getFlag()之前执行,实际上可以将元素推入@ 987654337@。如果您将该行移到 getFlag() 函数体内,您将看到它正确显示 1
  • 好吧,我想使用random,但如果我将random.classList.remove('trigger') 提供给classList,它会给我一个错误。
  • 那是因为你将random设置为一个数组;如果您将let random = [x[Math.floor(Math.random() * x.length)]]; 替换为let random = x[Math.floor(Math.random() * x.length)];(没有最外面的方括号),您可以仅使用random 而不是random[0] 来引用该元素
  • 哦,哇,我不知道这可能谢谢!现在我已经修复了我的代码。谢谢大家!

标签: javascript arrays random


【解决方案1】:

试试这个吧:

let container = [];
let x = document.querySelectorAll('.trigger');

function getFlag() {
  console.log("pushed");
  
   /*When you click on the button, if "pushed" is not logged, here's an error*/
  
  let random = [x[Math.floor(Math.random() * x.length)]];

  if (!container.includes(random[0])) {
    random[0].classList.remove('trigger');

    console.log('random n: ' + random[0]);
    container.push(random[0]);
    
    console.log('x length: ' + x.length)
    console.log('array length: ' + container.length)
  }
}

如果你在函数将随机数推送到数组后记录数组的长度,也许你会得到结果

【讨论】:

    猜你喜欢
    • 2014-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-15
    • 2018-03-11
    • 1970-01-01
    相关资源
    最近更新 更多