3.7数组的用途

  现在,我们已经介绍了创建数组和使用数组的许多不同方法。但是,用这些属性和方法实际上可以做些什么呢?在本节中,我们要编写一个小程序来展示数组所能做的一些有用的事情。

3.7.1找到回家的路

  场景是这样的:你的朋友已经来过你家,现在她想要向你展示她的家。问题是,之前你从未去过她家,稍后你必须要自己找到回家的路。

好在,有一个好办法来帮助你解决这个难题:在去朋友家的路上,把路上看到的所有中标都记录到一个列表中。在回家的路上,逆序地遍历这个列表,每次路过一个中标,就会检查列表末尾的元素,以便知道接下来该怎么走。

用push创建数组

  让我们编写一些代码来实际这个场景。先来创建一个空的数组。以空数组作为开始,是因为在你真正开始动身去朋友家之前,并不知道会看到哪些路标。之后,把去朋友家路途中的每个路标的描述都push到数组的末尾。然后,当回家的时候,从数组中pop出每个路标。

《javascript-少儿编程》第三章数组的用途  《javascript-少儿编程》第三章数组的用途

  在这里,创建了一个名为landmarks的空数组,然后使用push把去朋友家路过的所有路标都保存在landmarks中。

用pop逆向遍历

  一旦当你到达朋友家,就可以查看landmarks数组了。果然,第一个元素是“My house”,后边是“Front path”,依次类推,直到数组的末尾,最后一个元素是“My friend's house”。当要回家的时候,所需要做的就是一个接一个地pop出这些元素,就知道接下来要怎么走了。

《javascript-少儿编程》第三章数组的用途

《javascript-少儿编程》第三章数组的用途

  喔,终于回家了!

  你注意了吗?第一个放入到数组中的路标是最后一个取出来的,而最后一个放入到数组中的路标是第一个取出来的。你可能会认为,最先放入的元素总是会想要最先取出,但是你会看到,有时候逆向遍历数组也很有用。

  在较大一些的程序中,使用这样的过程实际上很常见,这就是为什么JavaScript会把push和pop设计得如此简单。

  注意:这种技术在计算机语言中叫作栈(stack)。可以把它想象成一堆煎饼。每次你做一个新的煎饼,就会把它放在最上边(就像push一样),每次吃掉一个,就从最上边拿掉它(就像pop)。从栈中弹出就像是时光倒流:最后pop出来的元素就是最先push进去的元素。这与摊煎饼一样:吃的最后一个煎饼是最先做出来的。用编程的术语来讲,这叫作后进先出(Last In,First Out,LIFO)。与LIFO相对的是先出先出(First In,First Out,FIFO),也叫作队列(queue),因它就像人们在排除一样,队列中的第一个人是第一个得到服务的人。

《javascript-少儿编程》第三章数组的用途

参考文献:《JavaScript for kids》By Nick Morgan 来源:http://www.allitebooks.org


本站内容未经许可,禁止任何网站及个人进行转载。