gpt4 book ai didi

javascript - 数组对象在 splice() 语句之前从列表中移除 (JS)

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:53:43 35 4
gpt4 key购买 nike

免责声明:这是学校实验室作业的一部分

更新:我想保留这个以供以后引用,所以我只删除代码部分。感谢所有帮助过的人!你帮了大忙

作业(求和):使用包含 30 个名人对象的数组在 HTML/JS 中创建一个名人照片猜谜游戏。

当前状态:我正处于检查用户猜测的部分。用户猜测在 function checkUserGuess() 中调用。如果匹配,则调用 displayOutPut("correct")("incorrect") 作为下一个函数的参数,function displayOutput(result)。它采用 result 参数并在 switch 语句中检查它。为了争论,我关心的代码是在“不正确”的情况下而不是“正确”的情况下,因为我不知道这些名人中的大多数面孔。为了测试目的,我故意弄错了。

(随机选择的名人:查理·卓别林)

观察:(根据我的屏幕截图)似乎名人数组已经删除了 Charlie,尽管它在控制台中读取该数组的大小为 30。这是在我拼接之前 查理出数组。 washedupCelebs 数组确实收到了 Charlie。并且,第三个数组显示删除查理的名人数组,大小更改为 29。

Screenshot: /image/prtHk.png

什么是 console.log 的顺序:

  • randomCelebrity 对象
  • celebrities 删除使用过的名人之前的数组
  • 当前名人指数
  • washedupCelebs 数组来存储使用过的名人
  • celebrities 移除当前名人后的数组

问题:拼接 发生之前删除 Charlie 是否有原因?我应该担心这个吗?我觉得这没什么大不了的,但我宁愿得到一些关于它的意见,这样我才能继续前进。该功能似乎可以正常工作,但它似乎以某种方式出现了故障。

注意事项: - 万一有同学看到这篇文章,我不想 他们窃取了我的代码。我将在几个小时后删除此帖子,因为 出于同样的原因。 - 还有一件事,我知道我的教授是这里的版主,所以如果你看到这个,我会非常乐意删除它并私信给你。不确定您是否介意我这样做,因为我并没有要求任何人实际为我完成作业。

代码:

因可能的复制而删除

最佳答案

TLDR:不要相信控制台。

如果您记录一个对象/数组,它会被序列化(变成一个字符串)并且该序列化版本会被打印到控制台中:

  console.log([1, 2]); // [1, 2]

现在对于较长的数组/嵌套对象,完整的序列化可能会导致打印出很长的字符串,这需要时间。另外,那个长字符串可能并没有真正的帮助(您看不到森林中的树)。因此控制台只序列化数组的一小部分,例如

 Array(30) [...]

它只是为您提供基本信息,只是数据类型 (Array) 长度 (30) 和内容被省略 ([...] )。

所以实际上没有魔法,在拼接之前,数组长度是30,之后是29


现在有一个有用但令人困惑的 >。因为有时缩写的序列化不足以调试,所以需要完整版。问题是,当您单击 > 时,控制台不再知道对象/数组在您记录时的样子。因此它序列化当前状态 对象/数组。因此,在展开的部分中,您会看到拼接版本两次,因为在您单击 >> 时它已经拼接了。


现在要得到当时的序列化版本,要么自己序列化:

 console.log( JSON.stringify(array) );

或者克隆数组来存储它的状态:

 console.log( array.slice() );

关于javascript - 数组对象在 splice() 语句之前从列表中移除 (JS),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52794737/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com