繁体   English   中英

Freecodecamp 上的“排队”练习

[英]"Stand in Line" exercise on Freecodecamp

我不明白 FreeCodeCamp 上 JavaScript 练习的一部分。

这是主题:

在计算机科学中,队列是一种抽象的数据结构,其中项目按顺序排列。 可以在队列的后面添加新项目,而从队列的前面取出旧项目。

  • 编写一个 function nextInLine,它将一个数组 (arr) 和一个数字 (item) 作为 arguments。
  • 将数字添加到数组的末尾,然后删除数组的第一个元素。
  • nextInLine function 应该返回被删除的元素。

这是解决方案:

 function nextInLine(arr, item) { arr.push(item); var removed = arr.shift(); return removed; }

这可能是非常基本的,但我不明白以下示例运行的第 4中的“存储在已删除中”。

示例运行:

  • 测试 nextInLine([2,1]); 运行。
  • nextInLine function 被调用。 arr 变为 [2]。 项目变为 1。
  • arr.push(项目); 将 1 推到 [2]。 所以 arr 现在是 [2,1]。
  • var removed = arr.shift(); 删除第一个元素。 所以 arr 现在是 [1]。 2 已被删除并存储在 removed 中
  • 返回删除; 2 返回。

从我的角度来看,如果 2 已被删除,剩下的就是 1,而 1 应该存储在方差中,因为当我们删除某些内容时,我们会排除并仅考虑余数 1。

但是我明明明白去掉的数字是2,所以感觉少了一步或者说错了。 我的逻辑很奇怪吗?

示例运行:

  • 测试 nextInLine([2,1]); 运行。

您只将arr传递给您的 function。 item未定义

  • 调用 nextInLine function。 arr 变为 [2]。 项目变为 1。

不,它没有。 arr仍然是 [2, 1], item仍然是未定义的。

  • arr.push(项目); 将 1 推到 [2]。 所以 arr 现在是 [2,1]。

再次,不。 arr.push(item)undefined推送到数组,所以现在是[2,1,undefined]

  • var 移除 = arr.shift(); 删除第一个元素。 所以 arr 现在是 [1]。 2 已被删除并存储在removed.

除了数组现在是 [1, undefined],这是正确的。

  • 退货已移除; 2 被退回。

正确的。 shift移除并返回数组的第一个元素。

Array.shift() 删除数组中的第一项,并返回该项

例如,您有一个数组: const yourArr = ["a", "b", "c", "d"]

yourArr.shift()删除“a”并返回它。 现在 yourArr = ["b","c","d"]

 const yourArr = ["a","b","c","d"] console.log(yourArr.shift()) console.log(yourArr)

 function nextInLine(arr, item){ // Only change code below this line arr.push(item); return arr.shift(); // Only change code above this line } // Setup const testArr = [1, 2, 3, 4, 5]; // Display code console.log("Before: " + JSON.stringify(testArr)); console.log(nextInLine(testArr, 6)); console.log("After: " + JSON.stringify(testArr));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM