100% found this document useful (3 votes)
6 views

(Ebook) Learning JavaScript Data Structures and Algorithms: Write complex and powerful JavaScript code using the latest ECMAScript, 3rd Edition by Loiane Groner ISBN B077NB5H6Y - Download the ebook today and experience the full content

The document provides information about various eBooks available for download on ebooknice.com, focusing on JavaScript data structures and algorithms. It includes details about multiple titles, authors, and ISBNs, as well as links for instant access to the eBooks in different formats. Additionally, it features insights into the author's background and the publishing details of the books.

Uploaded by

btdtlays
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
100% found this document useful (3 votes)
6 views

(Ebook) Learning JavaScript Data Structures and Algorithms: Write complex and powerful JavaScript code using the latest ECMAScript, 3rd Edition by Loiane Groner ISBN B077NB5H6Y - Download the ebook today and experience the full content

The document provides information about various eBooks available for download on ebooknice.com, focusing on JavaScript data structures and algorithms. It includes details about multiple titles, authors, and ISBNs, as well as links for instant access to the eBooks in different formats. Additionally, it features insights into the author's background and the publishing details of the books.

Uploaded by

btdtlays
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 77

Instant Ebook Access, One Click Away – Begin at ebooknice.

com

(Ebook) Learning JavaScript Data Structures and


Algorithms: Write complex and powerful JavaScript
code using the latest ECMAScript, 3rd Edition by
Loiane Groner ISBN B077NB5H6Y

https://ebooknice.com/product/learning-javascript-data-
structures-and-algorithms-write-complex-and-powerful-
javascript-code-using-the-latest-ecmascript-3rd-
edition-42371476

OR CLICK BUTTON

DOWLOAD EBOOK

Get Instant Ebook Downloads – Browse at https://ebooknice.com


Instant digital products (PDF, ePub, MOBI) ready for you
Download now and discover formats that fit your needs...

Start reading on any device today!

(Ebook) Learning JavaScript Data Structures and Algorithms by Loiane Groner ISBN
9781785285493, 1785285491

https://ebooknice.com/product/learning-javascript-data-structures-and-
algorithms-5847376

ebooknice.com

(Ebook) Estruturas de dados e algoritmos com JavaScript by Groner, Loiane

https://ebooknice.com/product/estruturas-de-dados-e-algoritmos-com-
javascript-37190150

ebooknice.com

(Ebook) JavaScript Regular Expressions by Groner, Loiane, Manricks, Gabriel ISBN


9781783282258, 1783282258

https://ebooknice.com/product/javascript-regular-expressions-55893704

ebooknice.com

(Ebook) Data Structures and Algorithms with JavaScript by Michael McMillan ISBN
9781449364939, 1449364934

https://ebooknice.com/product/data-structures-and-algorithms-with-
javascript-37208884

ebooknice.com
(Ebook) Beginning Functional JavaScript. Functional Programming with JavaScript
using EcmaScript 6 by Anto Aravinth ISBN 9781484226568, 1484226569

https://ebooknice.com/product/beginning-functional-javascript-functional-
programming-with-javascript-using-ecmascript-6-5755216

ebooknice.com

(Ebook) Beginning Functional JavaScript: Functional Programming with JavaScript


Using EcmaScript 6 by Anto Aravinth ISBN 9781484226551, 9781484226568, 1484226550,
1484226569

https://ebooknice.com/product/beginning-functional-javascript-functional-
programming-with-javascript-using-ecmascript-6-22627242

ebooknice.com

(Ebook) JavaScript Data Structures and Algorithms: An Introduction to Understanding


and Implementing Core Data Structure and Algorithm Fundamentals by Sammie Bae ISBN
9781484239889, 1484239881

https://ebooknice.com/product/javascript-data-structures-and-algorithms-an-
introduction-to-understanding-and-implementing-core-data-structure-and-
algorithm-fundamentals-52953836

ebooknice.com

(Ebook) Learning Behavior-driven Development with JavaScript_ Create powerful yet


simple-to-code BDD test suites in JavaScript using the most popular tools in the
community by kan

https://ebooknice.com/product/learning-behavior-driven-development-with-
javascript-create-powerful-yet-simple-to-code-bdd-test-suites-in-javascript-
using-the-most-popular-tools-in-the-community-50195346

ebooknice.com

(Ebook) -■■JavaScript■■■■■■■■■■ Learning JavaScript Data Structures and Algorithms


2nd Edition by [■■]■■■■LoianeGroner■, ■■■, ■■, ■■, ■■, ■■ ISBN 9787115467539,
7115467536

https://ebooknice.com/product/javascript-learning-javascript-data-structures-
and-algorithms-2nd-edition-10609092

ebooknice.com
Learning JavaScript Data Structures and Algorithms
Third Edition

Write complex and powerful JavaScript code using the latest


ECMAScript

Loiane Groner
BIRMINGHAM - MUMBAI
Learning JavaScript Data
Structures and Algorithms
Third Edition
Copyright © 2018 Packt Publishing

All rights reserved. No part of this book may be reproduced, stored in a retrieval system, or transmitted in any form or
by any means, without the prior written permission of the publisher, except in the case of brief quotations embedded in
critical articles or reviews.

Every effort has been made in the preparation of this book to ensure the accuracy of the information presented.
However, the information contained in this book is sold without warranty, either express or implied. Neither the author,
nor Packt Publishing or its dealers and distributors, will be held liable for any damages caused or alleged to have been
caused directly or indirectly by this book.

Packt Publishing has endeavored to provide trademark information about all of the companies and products
mentioned in this book by the appropriate use of capitals. However, Packt Publishing cannot guarantee the accuracy
of this information.

Commissioning Editor: Amarabha Banerjee


Acquisition Editor: Larissa Pinto
Content Development Editor: Flavian Vaz
Technical Editor: Vaibhav Dwivedi
Copy Editor: Safis Editing
Project Coordinator: Devanshi Doshi
Proofreader: Safis Editing
Indexer: Rekha Nair
Graphics: Jason Monteiro
Production Coordinator: Arvindkumar Gupta

First published: October 2014


Second edition: June 2016
Third edition: April 2018

Production reference: 1250418

Published by Packt Publishing Ltd.


Livery Place
35 Livery Street
Birmingham
B3 2PB, UK.

ISBN 978-1-78862-387-2
www.packtpub.com
To my parents, for their love and support and for guiding me throughout all these years.
To my husband, for his support and for being my loving partner throughout our life journey.
– Loiane Groner
mapt.io

Mapt is an online digital library that gives you full access to over
5,000 books and videos, as well as industry leading tools to help you
plan your personal development and advance your career. For more
information, please visit our website.
Why subscribe?
Spend less time learning and more time coding with practical
eBooks and Videos from over 4,000 industry professionals

Improve your learning with Skill Plans built especially for you

Get a free eBook or video every month

Mapt is fully searchable

Copy and paste, print, and bookmark content


PacktPub.com
Did you know that Packt offers eBook versions of every book
published, with PDF and ePub files available? You can upgrade to
the eBook version at www.PacktPub.com and as a print book customer, you
are entitled to a discount on the eBook copy. Get in touch with us at
[email protected] for more details.

At www.PacktPub.com, you can also read a collection of free technical


articles, sign up for a range of free newsletters, and receive
exclusive discounts and offers on Packt books and eBooks.
Contributors
About the author
Loiane Groner has over 10 years of experience in developing
enterprise applications. Currently, she works as a business analyst
and a Java/HTML5/JavaScript developer at an American financial
institution.

She is passionate about technology, publishes articles on her blog,


and has presented talks at conferences about Java, ExtJS, Cordova,
Ionic, TypeScript and Angular.

She is a Google Developer Expert in Web Technologies and Angular,


and a Microsoft Most Valuable Professional in Visual Studio and
Development Technologies. She has also authored other Packt
books.
I would like to thank my parents, for giving me education, guidance, and advices through all these years, and my
husband, for being patient and supportive and giving me encouragement so that I keep doing what I love.
I also would like to thank the readers of this book and other books that I have written for their support and feedback.
Thank you very much!
About the reviewers
Todd Zebert is a full stack web developer, currently at Miles.

He has been a technical reviewer for a number of books and videos,


is a frequent presenter at conferences on JavaScript, Drupal, and
related technologies, and has a technology blog on Medium.

He has a diverse background in technology, including infrastructure,


network engineering, PM, and IT leadership. He started web
development with the original Mosaic browser.

He is an entrepreneur and part of the LA start-up community. He


believes in volunteering, Open Source, Maker/STEM/STEAM, and
contributing back to the community.

Kashyap Mukkamala is a passionate software architect at Egen


Solutions Inc. and the author of Hands-On Data Structures and
Algorithms with JavaScript. When Kashyap is not solving problems
for Fortune 500 companies at Egen, he is focused on building the
web of the future and helping the community grow and learn.
Packt is searching for authors
like you
If you're interested in becoming an author for Packt, please visit author
s.packtpub.com and apply today. We have worked with thousands of

developers and tech professionals, just like you, to help them share
their insight with the global tech community. You can make a general
application, apply for a specific hot topic that we are recruiting an
author for, or submit your own idea.
Table of Contents
Title Page
Copyright and Credits
Learning JavaScript Data Structures and Algorithms  Third Edition
Dedication
Packt Upsell
Why subscribe?
PacktPub.com
Contributors
About the author
About the reviewers
Packt is searching for authors like you
Preface
Who this book is for
What this book covers
To get the most out of this book
Download the example code files
Conventions used
Get in touch
Reviews
1. JavaScript – A Quick Overview
JavaScript data structure and algorithms
Setting up the environment
The minimum setup to work with JavaScript
Using web servers
Node.js http-server
JavaScript basics
Variables
Scope variable
Operators
Truthy and falsy
Functions of the equals operators (== and ===)
Control structures
Conditional statements
Loops
Functions
Object-oriented programming in JavaScript
Debugging and tools
Debugging with VSCode
Summary
2. ECMAScript and TypeScript Overview
ECMAScript or JavaScript?
ES6, ES2015, ES7, ES2016, ES8, ES2017, and ES.Next
The compatibility table
Using Babel.js
ECMAScript 2015+ functionalities
let and const instead of var
Variables scope with let and const
Template literals
Arrow functions
Default parameter values for functions
Declaring the spread and rest operators
Enhanced object properties
Object-oriented programming with classes
Inheritance
Working with getters and setters
Exponentiation operator
Modules
Running ES2015 modules in the browser and with Node.js
Using native ES2015 imports in Node.js
Running ES2015 modules in the browser
ES2015+ backward compatibility
Introducing TypeScript
Type inference
Interfaces
Generics
Other TypeScript functionalities
TypeScript compile-time checking in JavaScript files
Summary
3. Arrays
Why should we use arrays?
Creating and initializing arrays
Accessing elements and iterating an array
Adding elements
Inserting an element at the end of the array
Using the push method
Inserting an element in the first position
Using the unshift method
Removing elements
Removing an element from the end of the array
Removing an element from the first position
Using the shift method
Adding and removing elements from a specific position
Two-dimensional and multi-dimensional arrays
Iterating the elements of two-dimensional arrays
Multi-dimensional arrays
References for JavaScript array methods
Joining multiple arrays
Iterator functions
Iterating using the every method
Iterating using the some method
Iterating using forEach
Using map and filter
Using the reduce method
ECMAScript 6 and new array functionalities
Iterating using the for...of loop
Using the @@iterator object
Array entries, keys, and values
Using the from method
Using the Array.of method
Using the fill method
Using the copyWithin method
Sorting elements
Custom sorting
Sorting strings
Searching
ECMAScript 2015 - the find and findIndex methods
ECMAScript 2016 - using the includes method
Outputting the array into a string
The TypedArray class
Arrays in TypeScript
Summary
4. Stacks
Creating a JavaScript data structure and algorithm library
The stack data structure
Creating an array-based Stack class
Pushing elements to the stack
Popping elements from the stack
Peeking the element from the top of the stack
Verifying whether the stack is empty
Clearing the elements of the stack
Using the Stack class
Creating a JavaScript object-based Stack class
Pushing elements to the stack
Verifying whether the stack is empty and its size
Popping elements from the stack
Peeking the top of the stack and clearing it
Creating the toString method
Protecting the internal elements of the data structure
The underscore naming convention
ES2015 classes with scoped symbols
ES2015 classes with WeakMap
ECMAScript class field proposal
Solving problems using stacks
Converting decimal numbers to binary
The base converter algorithm
Summary
5. Queues and Deques
The queue data structure
Creating the Queue class
Enqueuing elements to the queue
Dequeuing elements from the queue
Peeking the element from the front of the queue
Verifying whether the queue is empty and its size
Clearing the queue
Creating the toString method
Using the Queue class
The deque data structure
Creating the Deque class
Adding elements to the front of the deque
Using the Deque class
Solving problems using queues and deques
The circular queue – Hot Potato
Palindrome checker
JavaScript task queues
Summary
6. Linked Lists
The linked list data structure
Creating the LinkedList class
Pushing elements to the end of the linked list
Removing elements from the linked list from a specific positio
n
Looping through the list until we get to the desired position
Refactoring the remove method
Inserting an element at any position
The indexOf method: returning the position of an element
Removing an element from the linked list
The isEmpty, size, and getHead methods
The toString method
Doubly linked lists
Inserting a new element at any position
Removing elements from any position
Circular linked lists
Inserting a new element at any position
Removing elements from any position
Sorted linked lists
Inserting elements in order
Creating the StackLinkedList class
Summary
7. Sets
Structuring a dataset
Creating a Set class
The has(element) method
The add method
The delete and clear methods
The size method
The values method
Using the Set class
Set operations
Set union
Set intersection
Improving the intersection method
Set difference
Subset
ECMAScript 2015 – the Set class
ES2015 Set class operations
Simulating the union operation
Simulating the intersection operation
Simulating the difference operation
Using the spread operator
Multisets or bags
Summary
8. Dictionaries and Hashes
The dictionary data structure
Creating the Dictionary class
Verifying whether a key exists in the dictionary
Setting a key and value in the dictionary and the ValuePa
ir class
Removing a value from the dictionary
Retrieving a value from the dictionary
The keys, values, and valuePairs methods
Iterating each ValuePair of the dictionary with forEach
The clear, size, isEmpty, and toString methods
Using the Dictionary class
The hash table
Creating a HashTable class
Creating a hash function
Putting a key and a value in the hash table
Retrieving a value from the hash table
Removing a value from the hash table
Using the HashTable class
Hash table versus hash set
Handling collisions between hash tables
Separate chaining
The put method
The get method
The remove method
Linear probing
The put method
The get method
The remove method
Creating better hash functions
The ES2015 Map class
The ES2015 WeakMap and WeakSet classes
Summary
9. Recursion
Understanding recursion
Calculating the factorial of a number
Iterative factorial
Recursive factorial
The call stack
JavaScript limitation on the call stack size
The Fibonacci sequence
Iterative Fibonacci
Recursive Fibonacci
Fibonacci with memoization
Why use recursion? Is it faster?
Summary
10. Trees
The tree data structure
Tree terminology
The binary and binary search trees
Creating the Node and BinarySearchTree classes
Inserting a key into the BST
Tree traversal
In-order traversal
Pre-order traversal
Post-order traversal
Searching for values in a tree
Searching for minimum and maximum values
Searching for a specific value
Removing a node
Removing a leaf node
Removing a node with a left or right child
Removing a node with two children
Self-balancing trees
Adelson-Velskii and Landi’s tree (AVL tree)
Height of a node and the balancing factor
Balancing operations– AVL rotations
Left-left case: single rotation to the right
Right-right case: single rotation to the left
Left-right case: double rotation to the right
Right-left case – double rotation to the left
Inserting a node in the AVL tree
Removing a node from the AVL tree
Red-Black tree
Inserting a node in the Red-Black tree
Verifying the Red-Black tree properties after insertion
Red-Black tree rotations
Summary
11. Binary Heap and Heap Sort
The binary heap data structure
Creating the MinHeap class
Binary tree array representation
Inserting a value into the heap
The sift up operation
Finding the minimum or maximum value from the heap
Extracting the minimum or maximum value from the heap
The sift down operation (heapify)
Creating the MaxHeap class
The heap sort algorithm
Summary
12. Graphs
Graph terminology
Directed and undirected graphs
Representing a graph
The adjacency matrix
The adjacency list
The incidence matrix
Creating the Graph class
Graph traversals
Breadth-first search (BFS)
Finding the shortest paths using BFS
Further study on the shortest paths algorithms
Depth-first search (DFS)
Exploring the DFS algorithm
Topological sorting using DFS
Shortest path algorithms
Dijkstra's algorithm
The Floyd-Warshall algorithm
Minimum spanning tree (MST)
Prim's algorithm
Kruskal's algorithm
Summary
13. Sorting and Searching Algorithms
Sorting algorithms
The bubble sort
The improved bubble sort
The selection sort
The insertion sort
The merge sort
The quick sort
The partition process
The quick sort in action
The counting sort
The bucket sort
The radix sort
Searching algorithms
The sequential search
The binary search
The interpolation search
Shuffle algorithms
The Fisher-Yates shuffle
Summary
14. Algorithm Designs and Techniques
Divide and conquer
Binary search
Dynamic programming
The minimum coin change problem
The knapsack problem
The longest common subsequence
Matrix chain multiplication
Greedy algorithms
The min-coin change problem
The fractional knapsack problem
Backtracking algorithms
Rat in a Maze
Sudoku Solver
Introduction to functional programming
Functional versus imperative programming
ES2015+ and functional programming
The JavaScript functional toolbox – map, filter, and red
uce
JavaScript functional libraries and data structures
Summary
15. Algorithm Complexity
Big O notation
Understanding big O notation
O(1)
O(n)
O(n2)
Comparing complexities
Data structures
Graphs
Sorting Algorithms
Searching Algorithms
Introduction to the NP-completeness theory
Impossible problems and heuristic algorithms
Having fun with algorithms
Summary
Other Books You May Enjoy
Leave a review - let other readers know what you think
Preface
JavaScript is one of the most popular programming language
nowadays. It is known as the internet language due the fact that the
browser understands JavaScript natively, without installing any
plugins in it. JavaScript has grown so much that is no longer just a
frontend language; it is also present now on the server (NodeJS),
database (MongoDB), and mobile devices and is also used in
embedded and Internet of Things (IoT) devices.

Learning data structures is very important for any technology


professional. Working as a developer means you are able to solve
problems with the help of programming languages, and data
structures are an indispensable piece of the solutions we need to
create to solve these problems. Choosing a wrong data structure can
also have an impact on the performance of the program we are
writing. That is why, it's important to get to know different data
structures and how to apply them properly.

Algorithms are the state of art of computer science. There are so


many ways of solving the same problem, and some approaches are
better than the others. That is why, it's also very important to know
the most famous algorithms.
This book was written for beginners who want to learn data
structures and algorithms and also for those who are already familiar
with data structures and algorithms, but want to learn it using
JavaScript.

Happy coding!
Who this book is for
If you are a student of computer science or are at the start of your
technology career and want to explore JavaScript’s optimum ability,
this book is for you. If you are already familiar with programming, but
want to hone your skills on algorithms and data structures, this book
is also for you.

You just need a basic knowledge of JavaScript and programming


logic to start having fun with algorithms.
What this book covers
, JavaScript - A Quick Overview, covers the basics of
Chapter 1

JavaScript needed prior to learning data structures and algorithms. It


also covers the setup of the development environment needed for
this book.

, ECMAScript and TypeScript Overview, covers some new


Chapter 2

JavaScript functionalities introduced since 2015 and also covers the


basic functionalities of TypeScript, a JavaScript superset.

, Arrays, explains how to use the most basic and most used
Chapter 3

data structure, which are the arrays. This chapter demonstrates how
to declare, initialize, add, and remove elements from an array. It also
covers how to use native JavaScript Array methods.

, Stacks, introduces the stack data structure, demonstrating


Chapter 4

how to create a stack and add and remove elements. It also


demonstrates how to use stack to solve some computer science-
related problems.

, Queues and Deques, covers the queue data structure,


Chapter 5

demonstrating how to create a queue and add and remove its


elements. It covers the deque data structure, a special type of the
queue. It also demonstrates how to use queue to solve some
computer science-related problems and the major differences
between queues and stacks.

, Linked Lists, explains how to create the linked list data


Chapter 6

structure from scratch using objects and "pointer" concept. Besides


covering how to declare, create, add, and remove elements, it also
covers the various types of linked lists, such as the doubly linked list
and circular linked list.
, Sets, introduces the set data structure and how it can be
Chapter 7

used to store non-repeated elements. It also explains the different


types of set operations and how to implement and use them.

, Dictionaries and Hashes, explains the dictionary and hash


Chapter 8

data structures and the differences between them. This chapter


covers how to declare, create, and use both data structures. It also
explains how to handle collisions in hash and techniques for creating
better hash functions.

, Recursion, introduces the concept of recursion and


Chapter 9

demonstrates the differences between declarative and recursive


algorithms.

, Trees, covers the tree data structure, its terminology,


Chapter 10

focusing on Binary Search Tree data— its methods to search,


traverse, add, and remove nodes. It also introduces self-balancing
trees, such as the AVL and Red-Black trees.

, Binary Heap and Heap Sort, covers the min heap and max
Chapter 11

heap data structures, how to use the heap as a priority queue, and
discusses the famous heap sort algorithm.

, Graphs, introduces the amazing world of graphs and its


Chapter 12

application in real-world problems. This chapter covers the most


common graph terminology, the different way of representing a
graph, how to traverse graphs using the Breadth-First Search and
Depth-First Search algorithms and its applications.

, Sorting and Searching Algorithms, explores the most used


Chapter 13

sorting algorithms, such as the Bubble sort (and its improved


version), Selection sort, Insertion sort, Merge sort, and Quick sort. It
also covers the counting and radix sort, two distributed sorting
algorithms. It also covers how to search algorithms, such as the
sequential and binary search, and how to shuffle arrays.
, Algorithm Designs and Techniques, introduces some
Chapter 14

algorithm techniques and some of the most famous algorithms. It


also covers an introduction to functional programming in JavaScript.

, Algorithm Complexity, introduces the Big-O notation and its


Chapter 15

concepts along with a cheat sheet of the complexity of the algorithms


implemented in this book. It covers an introduction to NP-
Completeness problems and heuristic solutions. At last, it explains
how to take your algorithm knowledge to the next level.
To get the most out of this book
Although this book provides a brief introduction on JavaScript in its
first chapter, you will need a basic knowledge of JavaScript and
programming logic.

To test the code examples provided by this book, you will need a
code editor (such as Atom or Visual Studio Code) so that you can
read the code and also a browser (Chrome, Firefox, or Edge).

You can also test the examples online by accessing https://javascript-d


s-algorithms-book.firebaseapp.com/. Also, remember to open the developer

tools of the browser so that you can see what is being outputted in
the browser's console.
Download the example code
files
You can download the example code files for this book from your
account at www.packtpub.com. If you purchased this book elsewhere, you
can visit www.packtpub.com/support and register to have the files emailed
directly to you.

You can download the code files by following these steps:

1. Log in or register at www.packtpub.com.


2. Select the SUPPORT tab.
3. Click on Code Downloads & Errata.
4. Enter the name of the book in the Search box and follow the
onscreen instructions.

Once the file is downloaded, please make sure that you unzip or
extract the folder using the latest version of:

WinRAR/7-Zip for Windows


Zipeg/iZip/UnRarX for Mac
7-Zip/PeaZip for Linux

The code bundle for the book is also hosted on GitHub at https://githu
b.com/PacktPublishing/Learning-JavaScript-Data-Structures-and-Algorithms-Third-Editi
. In case there's an update to the code, it will be updated on the
on

existing GitHub repository.

We also have other code bundles from our rich catalog of books and
videos available at https://github.com/PacktPublishing/. Check them out!
Conventions used
There are a number of text conventions used throughout this book.

: Indicates code words in text, database table names, folder


CodeInText

names, filenames, file extensions, pathnames, dummy URLs, user


input, and Twitter handles. Here is an example: "Mount the
downloaded WebStorm-10*.dmg disk image file as another disk in your
system."

A block of code is set as follows:


class Stack {
constructor() {
this.items = []; // {1}
}
}

When we wish to draw your attention to a particular part of a code


block, the relevant lines or items are set in bold:
const stack = new Stack();
console.log(stack.isEmpty()); // outputs true

Any command-line input or output is written as follows:


npm install http-server -g

Bold: Indicates a new term, an important word, or words that you


see onscreen. For example, words in menus or dialog boxes appear
in the text like this. Here is an example: "Select System info from the
Administration panel."
Warnings or important notes appear like this.

Tips and tricks appear like this.


Get in touch
Feedback from our readers is always welcome.

General feedback: Email [email protected] and mention the book


title in the subject of your message. If you have questions about any
aspect of this book, please email us at [email protected].

Errata: Although we have taken every care to ensure the accuracy


of our content, mistakes do happen. If you have found a mistake in
this book, we would be grateful if you would report this to us. Please
visit www.packtpub.com/submit-errata, selecting your book, clicking on the
Errata Submission Form link, and entering the details.

Piracy: If you come across any illegal copies of our works in any
form on the Internet, we would be grateful if you would provide us
with the location address or website name. Please contact us at
[email protected] with a link to the material.

If you are interested in becoming an author: If there is a topic that


you have expertise in and you are interested in either writing or
contributing to a book, please visit authors.packtpub.com.
Reviews
Please leave a review. Once you have read and used this book, why
not leave a review on the site that you purchased it from? Potential
readers can then see and use your unbiased opinion to make
purchase decisions, we at Packt can understand what you think
about our products, and our authors can see your feedback on their
book. Thank you!

For more information about Packt, please visit packtpub.com.


JavaScript – A Quick Overview
JavaScript is a very powerful language. It is one of the most popular
languages in the world and is one of the most prominent languages
on the internet. For example, GitHub (the world's largest code host,
available at https://github.com) hosts over 400,000 JavaScript
repositories (the largest number of projects available is in JavaScript;
refer to http://githut.info). The number of projects in JavaScript and
GitHub grows every year.

JavaScript is not a language that can only be used in the frontend. It


can also be used in the backend, and Node.js is the technology
responsible for this. The number of Node Package Modules (npm),
https://www.npmjs.org, has also grown exponentially. JavaScript can also

be used for mobile development and is one of the most popular


frameworks in Apache Cordova (https://cordova.apache.org), which is a
mobile hybrid framework that allows developers to code using
HTML, CSS, and JavaScript, which allows you to build an app and
generate an APK file for Android and IPA file for iOS (Apple). And of
course, let's not forget about desktop applications. We can write
desktop applications compatible with Linux, Mac OS, and Windows
using a JavaScript framework called Electron (https://electron.atom.io).
JavaScript is also used in embedded and Internet of Things (IoT)
devices. As you can see, JavaScript is everywhere!

JavaScript is a must-have on your resume if you are or are


becoming a web developer.

In this chapter, you will learn the syntax and some necessary basic
functionalities of JavaScript so that we can start developing our own
data structures and algorithms. We will cover:

Setting up the environment and JavaScript basics


Controlling structures and functions
Object-oriented programming in JavaScript
Debugging and tools
JavaScript data structure and
algorithms
In this book, you will learn about the most-used data structures and
algorithms. Why should we use JavaScript to learn about data
structures and algorithms? We have already answered this question.
JavaScript is very popular and is appropriate for learning about data
structures because it is a functional language. Also, this can be a
very fun way of learning something new, as it is very different from
(and easier than) learning about data structures with a standard
language such as C, Java, or Python. And who said data structures
and algorithms were only made for languages such as C and Java?
You might need to implement some of these languages while
developing for the frontend as well.

Learning about data structures and algorithms is very important. The


first reason is that data structures and algorithms can solve the most
common problems efficiently. This will make a difference to the
quality of the source code you write in the future (including
performance; if you choose the incorrect data structure or algorithm,
depending on the scenario, you may have some performance
issues). Secondly, algorithms are studied in college together with the
introductory concepts of computer science. And finally, if you are
planning on getting a job with one of the greatest Information
Technology (IT) companies (such as Google, Amazon, Microsoft,
eBay, and so on) data structures, and algorithms are the subjects of
interview questions.

Let's get started!


Setting up the environment
One of the pros of the JavaScript language compared to other
languages is that you do not need to install or configure a
complicated environment to get started with it. Every computer has
the required environment already, even though the user may never
write a single line of source code. All we need is a browser!

To execute the examples in this book, it is recommended that you


have a modern browser installed such as Google Chrome or Firefox
(you can use the one you like the most), an editor of your preference
(such as Visual Studio Code), and a web server (XAMPP or any
other of your preference, but this step is optional). Chrome, Firefox,
VS Code, and XAMPP are available for Windows, Linux, and Mac
OS.
The minimum setup to work
with JavaScript
The simplest environment that you can use for JavaScript
development is a browser. The modern browsers (Chrome, Firefox,
Safari, and Edge) have a functionality called Developer Tools. To
access the DevTools in Chrome, you can click on the menu in the
upper-right corner, More Tools | Developer Tools:

When you open the DevTools, you will see the Console tab, and you
will be able to write all your JavaScript code in its command-line
area, as demonstrated in the following screenshot (to execute the
source code, you need to press Enter):
Random documents with unrelated
content Scribd suggests to you:
—No se requiere sino probar su identidad y luego hacerle ejecutar,
añadió Cobos.
A una señal de D. Jaime, dos soldados condujeron a D. Melchor,
atado codo con codo.
El hermano de doña Dolores de la Cruz, estaba pálido y
descompuesto y llevaba el traje desgarrado y manchado de sangre y
lodo.
Los oficiales se habían constituido en consejo de guerra bajo la
presidencia del general Cobos.
—¿Cómo se llama V.? preguntó éste al reo.
—D. Melchor de la Cruz, respondió en voz sorda el joven.
—¿Confiesa V. haberse pasado al enemigo junto con los soldados
que estaban a sus órdenes?
D. Melchor no respondió, pero se estremeció de píes a cabeza.
—Al tribunal le cabe el convencimiento de que este hombre es un
traidor, dijo Cobos, ¿qué castigo merece?
—Él de los traidores, respondieron unánimemente los oficiales.
—Que le fusilen, dijo el general Cobos.
El reo fue conducido ante el frente de banderas y puesto de rodillas,
y tras él y a seis pasos diez cabos formaron pelotón. Luego Cobos se
acercó al que iban a ejecutar, y le dijo:
—Cobarde y traidor, eres indigno de la jerarquía a que te habían
elevado; por lo tanto, en nombre de todos nuestros compañeros te
declaro degradado y expulso de entre la gente de honor.
Un soldado arrancó entonces a D. Melchor las insignias de su grado
y con ellas le cruzó el rostro.
A este insulto, el joven lanzó un rugido de tigre, tendió en torno de
sí una mirada despavorida e hizo un movimiento para levantarse.
—¡Fuego! gritó el general Cobos.
Resonó una descarga, el reo dio una horrible voz de agonía y cayó
boca abajo, revolcándose entre terribles convulsiones.
—¡Remátenle! dijo el presidente movido a compasión.
—No, repuso Cobos con aspereza; que muera como un perro;
cuanto más padezca más completa será nuestra venganza.
Miramón hizo un gesto de disgusto y ordenó que tocasen botasillas.
Los fugitivos anudaron la marcha.
Sólo dos hombres habían permanecido cerca del infeliz,
contemplándole como se retorcía a sus pies en medio de los más
atroces padecimientos: el general Cobos y D. Jaime.
El cual se inclinó hasta el moribundo, le levantó la cabeza y
obligándole a fijar en él su vidriosa mirada, le dijo en voz sorda:
—¡Parricida, traidor hacia tu patria y hacia tus hermanos, éstos son
los que hoy se vengan; muere como quien eres y llévese tu alma el
diablo; tu cuerpo, privado de sepultura, será pasto de las fieras!
—¡Misericordia! exclamó el desdichado cayendo de espaldas,
¡misericordia!
Una postrer convulsión sacudió el cuerpo del joven, sus crispadas
facciones cobraron un aspecto horrible, lanzó un rugido y quedó
inmóvil.
D. Jaime le empujó con el pie: estaba muerto.
—¡Uno! murmuró el aventurero subiéndose otra vez a caballo.
—¿Qué dice V.? preguntó Cobos.
—Nada, estaba echando una cuenta, respondió D. Jaime riéndose
con zumba.

XX
CARA A CARA

Cuando Miramón llegó a Méjico, era ya pública la noticia de su


derrota.
Entonces ocurrió un hecho singular: el clero y la aristocracia, a
quienes Miramón había sostenido y defendido siempre, y la
indiferencia y el egoísmo de los cuales sin embargo causaran la ruina
y perdición de aquél, ahora deploraban la conducta que habían
observado para con el único hombre capaz de salvarles.
Como en aquella hora suprema Miramón hubiese querido hacer un
llamamiento a la población, ésta se habría agrupado inmediatamente
en torno de él, facilitándole la organización de una vigorosa defensa.
A Miramón ni siquiera se le ocurrió tal pensamiento: disgustado del
poder no aspiraba sino bajar de él y retirarse a la vida privada.
Apenas llegado a Méjico, lo que primero hizo el joven presidente fue
reunir al cuerpo diplomático extranjero y rogar a los miembros del
mismo que interpusieran su influjo para salvar a la ciudad, haciendo
cesar un estado de guerra que no tenía ya razón de ser desde el
instante que la capital estaba dispuesta a abrir sus puertas a las
tropas federales sin disparar un tiro.
Sin pérdida de tiempo fue a entrevistarse con el general Ortega,
para alcanzar una capitulación honrosa, una comisión compuesta de
los representantes de Francia y España, del general Berriozábal el
prisionero de Toluca, y del general Ayestarán, amigo particular de
Miramón.
D. Antonio Cacerbar había ensayado unirse a la comisión expresada;
y es que, sabedor del triste fin de su amigo Cruz, tenía el
presentimiento de que le amagaba una suerte parecida; pero las
puertas de la ciudad estaban cuidadosamente vigiladas, y nadie
podía salir por ellas sin ir provisto de un pase refrendado por el jefe
de plaza. Así pues, D. Antonio no tuvo más remedio que quedarse
en la ciudad. Sin embargo, le hizo recobrar un tanto la esperanza
una carta, en la cual le dejaban entrever la próxima realización de
los proyectos que perseguía hacía tanto tiempo.
Ello no obstante, como D. Antonio Cacerbar era hombre muy
precavido por haberle acostumbrado a estar siempre sobre aviso las
sombrías maquinaciones a que se entregara durante toda su
existencia, al par que permanecía en su casa, como a ello, le
invitaban en la carta a que acabamos de hacer referencia, había
convocado a ella a una docena de matones de los más desalmados y
les había ocultado tras los tapices a fin de estar preparado a todo
evento.
Esto sucedía el día mismo del regreso de Miramón a Méjico.
Poco más o menos a las nueve de la noche del mencionado día, D.
Antonio estaba en su dormitorio, leyendo, o más bien dicho,
ensayando leer, porque su atormentada conciencia no le dejaba la
tranquilidad de ánimo necesaria para entregarse a tan inocente
distracción, cuando oyó hablar bastante recio en la antesala.
Cacerbar se levantó al punto y se encaminó hacia la puerta a fin de
indagar la causa de tal ruido, pero no bien iba a abrirla cuando lo
hizo otra mano y pareció en el dormitorio el ayuda de cámara de
aquél, sirviendo de introductor a muchas personas, nueve en junto,
seis hombres enmascarados y embozados en sarapes, y tres damas.
D. Antonio, al ver a los recién llegados experimentó un
estremecimiento nervioso, pero rehaciéndose casi instantáneamente,
permaneció en pie ante su mesa, probablemente aguardando a que
uno de los desconocidos se decidiese a hacer uso de la palabra.
Esto fue lo que, en efecto, sucedió.
—Señor don Antonio, dijo uno de los enmascarados adelantando un
paso, aquí le entrego a V. a doña María, duquesa de Tobar, su
cuñada, a doña Carmen Tobar, su sobrina, y a doña Dolores de la
Cruz.
Al oír estas palabras, pronunciadas con sangrienta ironía, don
Antonio se echó atrás, palideció intensamente y en voz en la que se
traslucía la emoción, repuso:
—No le entiendo a V.
—¿Conque no me conoce usted, don Horacio? dijo entonces doña
María en voz suave; ¿por tal modo me ha desfigurado el dolor que le
sea a V. posible negar que yo soy la desventurada esposa del
hermano a quien V. asesinó?
—¿Qué significa esta comedia? exclamó don Antonio con arrebato;
esta mujer ha perdido el juicio; y V., miserable, que se atreve a
chancearse conmigo, váyase con cuidado.
Aquél a quien iban dirigidas estas palabras contestó con una sonrisa
de desprecio, y levantando la voz, dijo:
—¿Quiere V. testigos de lo que va a pasar aquí, caballero? ¿Le
parece que todavía no somos bastantes para oír lo que va a decirse
aquí? Perfectamente: salgan Vds. de sus escondites, señores, y Vds.,
caballeros, acérquense.
Al mismo tiempo se levantaron los tapices y se abrieron las puertas y
unas veinte personas penetraron en el dormitorio.
—¡Ah! ha llamado V. testigos, profirió don Antonio con acento
zumbón; pues bien, caiga sobre su cabeza de V. la sangre que aquí
va a derramarse.
Y volviéndose hacia los hombres que tras él permanecían inmóviles,
les dijo en voz de trueno, al mismo tiempo que se apoderaba de dos
revólveres de seis tiros que estaban sobre una mesa situada al
alcance de su mano.
—¡Maten Vds. como perros a esos canallas!
Pero nadie se movió.
—¡Quítense todos las máscaras! dijo el personaje que hasta
entonces había hablado; ya son inútiles; a ese hombre debemos
hablarle a rostro descubierto.
Y arrojando la carátula que le cubría el semblante, sus compañeros
le imitaron.
El lector los ha conocido ya: eran don Jaime, Domingo, el conde del
Saulay, León Carral, don Diego y el ranchero Loick.
—Ahora, señor, dijo don Jaime, despójese V. de su nombre postizo
como nosotros nos hemos despojado de nuestras máscaras. ¿Me
conoce usted? soy don Jaime de Vivar, el hermano de su cuñada;
veintidós años hace le sigo a V. paso a paso, señor don Horacio de
Tobar, espiando todos los de V. y buscando la venganza que Dios me
concede al fin, grande y cabal como yo la soñara.
Don Horacio levantó orgullosamente la cabeza, y dirigiendo una
mirada de soberano desdén a don Jaime, replicó:
—Y diga V., mi noble cuñado, porque como usted desea renuncio a
fingir y consiento en conocerle, ¿qué venganza es esa tan grande y
cabal que ha conseguido después de veintidós años? ¿la de
obligarme a que yo mismo me dé la muerte? ¡Vaya un provecho!
¿Acaso no está siempre pronto a morir un hombre de mi temple?
¿Qué más puede V.? nada; suponiendo que yo ruede aquí por el
suelo, a sus pies, me llevaré conmigo a la tumba el secreto de esa
venganza. Secreto que V. ni siquiera sospecha, y cuyos beneficios los
reporto yo por completo, porque al morir le legaré una
desesperación más profunda que la que en una noche encaneció los
cabellos de su hermana.
—Desengáñese V., don Horacio, arguyó don Jaime; esos secretos
que V. supone tan ocultos, los conozco todos, y en cuanto a matarle,
esta consideración es secundaria en mi plan de venganza; le mataré
a V., sí, pero por mano del verdugo, porque ha de saber que morirá
V. deshonrado, de muerte infamatoria, en una palabra, de garrote
vil.
—¡Mientes, canalla! exclamó don Horacio con rugido de bestia fiera;
¡yo, yo, el duque de Tobar! ¡noble como el rey! ¡yo, perteneciente a
una de las más encumbradas y antiguas familias de España! ¡yo
morir agarrotado! El odio te trastorna el juicio, estás loco; en Méjico
hay un embajador de S. M.
—Sí, replicó don Jaime, pero ese embajador te abandona a todo el
rigor de las leyes mejicanas.
—¿Quién, él, mi amigo, mi protector, él que me presentó al
presidente Miramón? Esto no es verdad, no puede serlo. Además,
soy extranjero y nada tengo que temer de las leyes de esta nación.
—Sí, un extranjero que en Méjico se ha puesto al servicio de un
gobierno para venderlo en provecho de otro; la carta que con tanta
instancia pedías al coronel don Felipe y que éste no quiso
vendértela, me la dio a mí de balde, y las para ti tan
comprometedoras cartas que te robaron en Puebla, gracias a don
Esteban, a quien no conoces a pesar de ser primo tuyo, en este
instante las tiene Juárez. Ya ves pues que por este lado estás
irremisiblemente perdido. Por último, tu más precioso secreto, el
secreto que tan bien guardado crees, también lo poseo yo: conozco
la existencia del hermano gemelo de doña Carmen, y además sé
donde está y si quiero puedo hacerle parecer de improviso a tu
presencia: mira, aquí está el hombre a quien vendiste tu sobrino,
añadió don Jaime designando a Loick, que estaba inmóvil a su lado.
—¡Oh! murmuró el cuñado de doña María, dejándose caer en una
butaca y retorciéndose las manos con desesperación, estoy perdido.
—Irremisiblemente perdido, don Horacio, profirió don Jaime con
desprecio, pues ni aun la muerte puede salvarte de la deshonra.
—Hable V., por Dios, dijo doña María acercándose a su cuñado;
¿verdad que no me he engañado? ¿que lo que don Jaime me dijo es
cierto? en una palabra, ¿que tengo un hijo y que ese hijo es el
hermano gemelo de doña Carmen?
—Sí, murmuró don Horacio en voz apagada.
—¡Bendito seas, Dios mío! exclamó doña María con expresión de
gozo inefable; pero V. sabe dónde está mi hijo y va a restituírmelo
¿no es verdad? por favor, piense V. que no le he visto nunca y que
necesito de sus caricias. ¿Dónde está? dígamelo V.
—¿Dónde está?
—Sí.
—No lo sé, respondió fríamente don Horacio.
La desventurada madre se dejó caer en un asiento y ocultó la
cabeza entre las manos.
—¡Ánimo, hermana mía! la dijo don Jaime acercándose a ella.
Por espacio de algunos segundos reinó un silencio fúnebre; en aquel
aposento donde se hallaban reunidas tantas personas no se oía más
ruido que el de las silbantes respiraciones y el de los ahogados
sollozos de doña María y de las dos jóvenes.
—Mí noble cuñado, dijo don Horacio avanzando un paso y en voz
firme no exenta de grandeza, hágame V. el favor de rogar a esos
caballeros que se retiren a una de las piezas contiguas; deseo hablar
a solas con V. y mi cuñada.
—Amigo mío, dijo don Jaime al conde del Saulay, tenga V. la
amabilidad de conducir a esas señoritas al salón inmediato.
El conde ofreció la mano a las jóvenes y salió sin proferir palabra,
seguido de todos los circunstantes, que a una señal de don Jaime se
retiraron silenciosamente.
Únicamente se quedó Domingo, el cual, fijando una mirada de fuego
en don Horacio, dijo:
—Como ignoro lo que va a pasar aquí y temo una asechanza, no
salgo hasta que expresamente me lo mande don Jaime, pues mi
deber es defenderle; hijo adoptivo suyo soy y él es quien me ha
educado.
—Puede V. quedarse, señor, profirió don Horacio sonriendo con
tristeza, casi pertenece usted a nuestra familia.
—Cuñado, dijo entonces don Jaime, el hijo que V. arrebató a mi
hermana, el heredero de los duques de Tobar a quien V. creía
perdido, yo lo salvé. Domingo, abraza a tu madre; María, éste es tu
hijo.
—¡Madre mía! exclamó el joven arrojándose en brazos de la
hermana de don Jaime, ¡madre mía!
—¡Hijo mío! murmuró doña María en voz desfallecida y cayendo sin
sentido en brazos del hijo a quien acababa de encontrar.
Fuerte contra el dolor, como todas las naturalezas privilegiadas, el
gozo la había vencido.
Domingo levantó a su madre en sus robustos brazos y la colocó en
una silla larga; luego, con el ceño fruncido, los ojos preñados de ira
y oprimidos los labios, avanzó lentamente hacia don Horacio.
El cual, lleno de terror, con la mirada fija y la frente cubierta de
palidez, le veía venir, retrocediendo a compás que el joven iba
avanzando, hasta que por fin tocó de espaldas en la pared y se vio
obligado a detenerse.
—¡Asesino de mi padre! ¡verdugo de mi madre! exclamó Domingo
con acento terrible, infame y canalla, ¡maldito seas!
Ante tal anatema, don Horacio doblegó la cabeza; pero irguiéndose
al punto, dijo:
—Dios es justo; mi castigo empieza; yo sabía que mi sobrino vivía; a
fuerza de pesquisas había concluido por conocer el paradero de
aquel a quien vendí el niño al nacer y que se encubre con el nombre
de Loick...
—Sí, repuso don Jaime, y ese Loick a quien la miseria indujera al
crimen, arrepentido de su falta me lo devolvió a mí.
—Es cierto, dijo don Horacio con acento entrecortado; ese joven es
realmente mi sobrino; tienes las facciones y la voz de mi
desventurado hermano.
Don Horacio se cubrió el rostro con las manos; pero rehaciéndose
luego, continuó:
—Hermano mío, V. posee casi todas las pruebas de los horribles
crímenes que he cometido; y acercándose a un mueble y
rompiéndolo, sacó de él un mazo de papeles, que entregó a don
Jaime, diciéndole: Aquí tiene V. las que le faltan. Tal vez
inconscientemente había ya penetrado en mi corazón el
arrepentimiento. Tome V., éste es mi testamento; en él nombro a mí
sobrino mi heredero universal, fijando sus derechos de una manera
indiscutible; pero no debe ser manchado el apellido de Tobar. Por
usted, por su sobrino, cuyo apellido es el mío, no ejecute V. la cruel
venganza que ha preparado contra mí; por mi honor, por la honra
inmaculada de mis antepasados, le juro que alcanzará V. satisfacción
cumplida de los crímenes que cometí y de la amarga existencia a
que he condenado a mi cuñada.
Don Jaime y Domingo permanecieron sombríos y silenciosos.
—¿Se negarían Vds. a escucharme? ¿Por ventura no les movería yo a
compasión? exclamó don Horacio con ansiedad.
En este momento doña María se levantó de la silla en la que su hijo
la colocara, avanzó lenta y automáticamente hacía su cuñado, se
interpuso entre éste, su hermano y su hijo, y tendiendo con ademán
majestuoso el brazo, dijo en voz impregnada de suavidad inefable:
—Hermano de mi marido, la venganza no pertenece sino a Dios. En
nombre de aquél a quien tanto amé y al que su crueldad de V. me
arrebató, le perdono los atroces tormentos que me ocasionó y los
dolores indecibles a que me condenó por espacio de veintidós años,
con todo y ser yo una mujer desventurada e inocente. Le perdono a
V., sí, y ojalá Dios le mire a V. con misericordia.
—Es V. una santa, profirió don Horacio cayendo de rodillas; no
merezco perdón, lo sé; pero en cuanto dependa de mí y haciendo
sacrificio de mi vida, procuraré rescatar los crímenes que cometí.
En pronunciando estas palabras, don Horacio se levantó e hizo
ademán de querer besar la mano a doña María; pero ésta retrocedió
con gesto de horror.
—Es justo, murmuró con acento triste el despreciado, soy indigno de
tocarla a V.
—No, repuso doña María, desde el instante que el arrepentimiento
entró en su corazón, no lo es V.
Y tendiendo la dama la mano y volviendo el rostro, don Horacio
imprimió en ella un respetuoso beso.
—¿Sólo Vds. van a ser implacables? dijo luego éste con tristeza y
dirigiéndose a don Jaime y a Domingo, que permanecían inmóviles.
—Ya no nos queda el derecho de castigar, respondió en voz sorda el
aventurero.
Domingo bajó la cabeza guardando un silencio huraño, al ver lo cual
doña María se le acercó y le asió suavemente el brazo.
—¿Qué quiere V., madre? preguntó el joven estremeciéndose.
—Yo perdoné a ese hombre, le respondió la buena mujer en voz
dulce como una súplica.
—Madre, repuso Domingo con acento de odio implacable, al
maldecir yo a ese hombre, mi padre habló por mi boca, y desde el
fondo de la ensangrentada tumba donde le tendió ese infame, me
dictó la maldición, que quedará impresa en él como estigma
indeleble. ¡Ah! Dios va a preguntar a ese asesino lo que al primer
fratricida: Caín, ¿qué has hecho de tu hermano Abel?
Al oír estas palabras, pronunciadas con acento terrible, don Horacio
cayó desplomado al suelo.
Don Jaime y doña María se habían alejado de él con horror.
Por espacio de largos minutos permaneció don Horacio tendido en el
suelo, sin que los circunstantes hiciesen movimiento alguno para
socorrerle. Sin embargo, doña María, dando rienda a los impulsos
caritativos de su corazón, hizo por fin un movimiento como para
acercarse a su cuñado.
—Deténgase V., madre, le dijo el joven; no toque V. a ese infame; su
contacto la mancharía.
—¡Le perdoné! repuso en voz débil la dama.
Don Horacio, que poco a poco había ido recobrando los sentidos, se
levantó lentamente, con las facciones espantosamente contraídas y
llevando impresa en ellas una resolución singular.
—Usted lo exige, dijo volviéndose hacia Domingo; enhorabuena, la
reparación será ruidosa.
Y registrando el cajón de una papelera cuya cerradura había abierto
valiéndose de una llave que pendiente de una cadenita de oro
llevaba al cuello, don Horacio tomó algo que nadie pudo ver, volvió a
cerrar el cajón, se encaminó con paso firme hacia la puerta, la abrió
de par en par y dijo en voz estridente:
—Entren Vds., caballeros.
En un instante la sala se llenó de gente; únicamente y a una seña de
don Jaime, el conde del Saulay y don Esteban se habían quedado en
el salón en compañía de doña Dolores y de doña Carmen.
Don Jaime se acercó entonces a su hermana, y ofreciéndole el
brazo, dijo:
—Venga V., María, esta escena la está matando; ahora que perdonó
V. a ese hombre, debe no permanecer aquí por más tiempo.
Doña María resistió apenas a la invitación de su hermano, el cual la
condujo al salón, volvió a entrar inmediatamente y cerró la puerta.
A poco se oyó el rodar de un coche; eran las tres damas que,
acompañadas del conde, se volvían a su casa.
Casi a compás resonó choque de armas en el salón.
—¿Qué es eso? preguntó don Horacio con gesto de inquietud.
Se oyó el ruido de pasos de mucha gente, la puerta se abrió de par
en par y con estrépito y en el umbral de ella aparecieron multitud de
soldados a cuyo frente iba el gobernador de la ciudad, el alcalde
mayor y muchos corchetes.
—En nombre de la ley, dijo el gobernador en voz lacónica, es V. mi
prisionero, don Antonio Cacerbar; corchetes, apodérense Vds. de
este hombre.
—Don Antonio Cacerbar ha dejado de existir, dijo don Jaime
interponiéndose con viveza entre los agentes de policía y su cuñado.
—Gracias, profirió éste, gracias por haber salvado la limpieza de mi
apellido.
Y volviéndose a los recién llegados, y señalando a Domingo, que
permanecía inmóvil, añadió en voz levantada:
—Señores, aquí tienen Vds. al duque de Tobar; yo soy un gran
culpado; suplicad a Dios que me perdone.
—Ea, corchetes, exclamó el gobernador, apodérense Vds. de este
hombre.
—Vengan por mí, dijo don Horacio llevándose prestamente la mano
a la boca.
De improviso el cuñado de doña María palideció, se tambaleó como
un borracho y dio consigo en tierra sin proferir un ay. Estaba muerto.
Don Horacio se había envenenado.
—Señores, dijo entonces don Jaime al gobernador y al alcalde
mayor, su cometido de ustedes termina ante la muerte del culpado;
desde este instante el cadáver de éste pertenece a su familia.
Háganme el favor de retirarse.
—Dios perdone a ese desdichado su último crimen, profirió el
gobernador; nada nos queda ya que hacer aquí.
Y después de haber saludado ceremoniosamente, el gobernador se
salió de la sala y de la casa acompañado de su séquito.
—Señores, dijo entonces don Jaime en voz triste y dirigiéndose a los
circunstantes, aterrorizados ante el desenlace singular y rápido de
aquella escena, roguemos por el alma de ese gran culpado.
Todos se arrodillaron, excepto Domingo, que permaneció en pie,
sombrío y con los ojos ardientemente fijos en el cadáver.
—Domingo, le dijo suavemente su tío, ¿llevas tu odio más allá de la
tumba?
—¡Sí! exclamó el joven con acento terrible; ¡sí! ¡maldito sea por los
siglos de los siglos!
Los circunstantes se levantaron con espanto; aquel anatema
fulminante había helado la oración en sus labios.

XXI

EPÍLOGO

EL HACHA

Ínterin, los acontecimientos políticos se desenvolvían con rapidez


fatal.
La diputación enviada a conferenciar con el general Ortega había
regresado a Méjico sin haber conseguido capitulación alguna, y la
situación se hacía más crítica por momentos.
En semejantes circunstancias el general Miramón dio pruebas de una
abnegación suma: no queriendo comprometer más a la ciudad de
Méjico, resolvió abandonarla aquella misma noche.
Entonces se encaminó a las casas consistoriales y propuso al
ayuntamiento que nombrase un presidente o un alcalde interino que
por sus relaciones anteriores con el partido victorioso estuviese en
estado de salvar la ciudad y de mantener en ella el orden.
El ayuntamiento se dirigió en corporación al general Berriozábal,
quien aceptó generosamente tan difícil cometido, siendo primer
cuidado de éste rogar al cuerpo diplomático extranjero que armase a
sus nacionales, para sustituir por ellos a la desorganizada policía y
velar por la seguridad de la población.
Miramón, entre tanto, lo disponía todo para su partida; pero no
pudiendo llevarse consigo a su mujer y a sus hijos en una huida
cuyas peripecias corrían riesgo de ser sangrientas, resolvió confiar
aquellos seres, para él tan queridos, a la embajada de España,
donde los recibieron con todas las consideraciones debidas a su
deplorable situación.
Como hubiese querido, Miramón podía haberse alejado sin tener
nada que temer de los partidarios de Juárez, pues naturalmente
simpático, si le miraban algunos como adversario político, nadie le
odiaba como enemigo personal.
Repetidas veces habían propuesto a Miramón el dejarle huir solo;
pero éste, con la delicadeza caballeresca que constituía una de las
cualidades más culminantes de su carácter, se negó aceptar tales
proposiciones, no queriendo como no quería abandonar en el último
momento a ciertas personas que en pro de él combatieran y se
habían comprometido por su causa, al odio implacable de sus
enemigos, sentimiento noble, conducta generosa que sus
adversarios mismos no pudieron menos de admirar.
Don Jaime pasó parte del día al lado del general, esforzándose en
consolarle y ayudándole a reunir en torno de él los dispersados
restos, no diremos de su ejército, pues éste había dejado de existir,
sino de los diferentes cuerpos que aún estaban indecisos respecto
de la causa a cuyo favor se inclinarían.
El conde del Saulay y el duque de Tobar, que así llamaremos a
Domingo desde este instante, después de haber pasado la noche en
compañía de las damas y hablado con ellas de los singulares
acontecimientos del precedente día, se habían despedido de ellas,
algo inquietos por la prolongada ausencia de don Jaime, a causa de
la confusión que en aquellos momentos reinaba en la ciudad; pero
no bien acababan de entrar en su casa y se disponían a entregarse
al descanso, cuando Raimbaut, el criado del conde, les anunció a
López, el cual se presentó poco después armado de punta en
blanco.
—¡Caramba! dijo el duque al verle, vaya un arsenal trae V. consigo,
amigo López.
—¿Tiene V. que comunicarnos algo? preguntó el conde.
—Nada más que esto; Dos y uno hacen tres.
—¡Vive Dios! exclamaron a una los dos jóvenes levantándose
espontáneamente. ¿Qué hay que hacer?
—Armarse Vds. y sus criados, dar orden de que ensillen los caballos
y aguardar.
—¿Así pues ocurren novedades? preguntó el duque.
—Lo ignoro, señor, mi amo se lo dirá a V.
—¿Va a venir?
—Antes de una hora estará presente; me dio orden de que me
quedase aquí con Vds.
—Pues aprovéchela para descansar, dijo el conde; nosotros vamos a
prepararnos.
Cuando, a las once de la noche, llegó don Jaime, éste encontró ya a
sus amigos completamente preparados y armados.
—Partiremos, dijo don Jaime.
—Cuando V. quiera, profirió Luis del Saulay.
—¿Vamos lejos? preguntó el duque.
—Me parece que no, respondió don Jaime; pero tal vez tengan que
hablar las armas.
—Mejor, dijeron los dos jóvenes.
—Todavía podemos disponer de media hora, tiempo más que
sobrado para que les explique a Vds. lo que pienso hacer, profirió
don Jaime. Ya saben Vds. cuan sincera es la amistad que me une al
general Miramón.
—Nos consta.
—Pues vean Vds. lo que ocurre: el general ha reunido unos mil
quinientos hombres, con cuya escolta imagina llegar con seguridad a
Veracruz, donde piensa embarcarse. A la una de esta madrugada se
pone en marcha.
—¿A tal extremo han llegado ya las cosas? preguntó el conde.
—Todo ha concluido, respondió don Jaime; Méjico se ha rendido a
los juaristas.
—En fin, que se arreglen como puedan; esto no nos atañe.
—Hasta ahora, dijo el duque, no veo qué papel nos toca
desempeñar en este drama.
—Voy a decírselo a Vds., repuso don Jaime. Miramón cree poder
contar con los mil quinientos hombres que componen su escolta;
pero yo estoy persuadido de lo contrario. Los soldados le quieren, es
cierto, pero detestan a ciertos personajes que parten con él; y como
me consta que se han hecho proposiciones a las tropas para que
éstas los entreguen, temo que se dejen convencer y que por la
misma causa Miramón caiga prisionero.
—Que es lo que probablemente sucederá, dijo el conde moviendo la
cabeza.
—Pues ahí lo que yo quiero evitar, dijo don Jaime con energía, y
para ello cuento con ustedes.
—Hace V. bien, profirió Luis.
—No podía V. elegir con más acierto, añadió el duque.
—Perfectamente, continuó don Jaime; de este modo Vds., yo, López,
León Carral y los dos criados formamos un efectivo de siete hombres
decididos, con quienes será menester contar en el caso de que las
circunstancias se presenten desfavorables; demás, la calidad de
extranjeros que les ampara a Vds. y el cuidado que han puesto en
vivir retirados, nos permitirán coronar nuestra obra, ocultando al
general en esta casa.
—Donde estará en completa seguridad, dijo el conde.
—Por otra parte cuanto acabo de manifestarles a Vds. es todavía
muy inseguro; las circunstancias nos servirán de guía. Tal vez la
escolta permanezca fiel al general; entonces, como nuestro concurso
no le servirá de nada, nos retiraremos después de haberle
acompañado hasta bastante distancia de la ciudad.
—A la buena de Dios, dijo Luis del Saulay; Miramón asume algo de
grande y caballeresco que me ha seducido, y no sentiría que se me
presentara coyuntura de serle útil.
—Ahora que nos hemos puesto de acuerdo, profirió el duque,
podríamos partir; ardo en deseos de encontrarme al lado de ese
valiente general; pero dígame usted, supongo que ante todo ha
vigilado por la seguridad de mi madre.
—Nada temas, sobrino, respondió don Jaime; a mi ruego el
embajador de España ha colocado una guardia de comerciantes de
nuestra nación en la misma casa donde ella mora; tu madre, Carmen
ni Dolores tienen qué temer. Por otra parte Esteban está con ellas, y
gracias al aprecio en que a éste le tiene Juárez, basta su sola
presencia para protegerlas eficazmente.
—Entonces adelante, dijeron los jóvenes levantándose,
embozándose en sus capas y armándose.
—Partamos, dijo don Jaime.
Los criados, que estaban ya en su sitio, se unieron a sus amos, y
juntos se salieron los siete de la casa, jinetes en sendos caballos, y
se encaminaron a la plaza Mayor donde se iban reuniendo las
tropas.
Las casas estaban iluminadas y por las calles circulaba una multitud
inmensa; pero en la ciudad reinaba la mayor tranquilidad, gracias a
las fuertes patrullas compuestas de franceses, ingleses y españoles
que la recorrían en todas direcciones y vigilaban con la más
generosa abnegación para el mantenimiento del orden durante el
intervalo de anarquía que siempre separa la caída de un gobierno de
la instalación del que le sustituye.
La plaza Mayor estaba muy animada; los soldados fraternizaban con
el pueblo, hablando y riendo como si lo que en tal momento pasaba
fuese lo más natural del mundo.
El general Miramón rodeado de un grupo bastante numeroso de
oficiales que habían permanecido fieles a su causa, o que demasiado
comprometidos para esperar que el vencedor les concediese buenas
condiciones, preferían acompañarle en su fuga a quedarse en la
ciudad, fingía una tranquilidad y un buen humor que estaba muy
lejos de sentir; hablaba con notable soltura, defendiendo sin acritud
los actos de su gobierno y despidiéndose, sin dirigir reproche ni
recriminación, de aquéllos que por egoísmo le habían abandonado y
ocasionado su caída.
—¡Ah! profirió Miramón al divisar a don Jaime y encaminándose
hacia él, ¿conque se viene V. decididamente conmigo? Temí que
mudase V. de consejo.
—Está V. muy amable, dijo don Jaime riéndose.
—No tome V. a mal mis palabras, repuso el general.
—La prueba de que le acompaño a V. es que le traigo dos amigos
que a toda costa quieren seguirle.
—Gracias mil, profirió Miramón; dichoso el hombre que al caer de
tan alto puede contar con amigos que le suavicen la caída.
—De esto no puede V. quejarse, general, dijo el conde haciendo una
profunda reverencia, porque amigos no le faltan.
—En efecto, murmuró Miramón tendiendo una triste mirada a su
alrededor, todavía no me encuentro solo.
Por espacio de algún tiempo la conversación continuó rodando sobre
este tema, hasta que dio la una en el Sagrario.
—Partamos, señores, dijo Miramón levantándose y en voz firme, ha
llegado la hora de salir de la ciudad.
—Que toquen marcha, gritó un oficial.
Las cornetas dieron la señal, los soldados se subieron a caballo y
formaron filas, y la multitud se refugió en los portales.
Luego se restableció la calma como por encanto y sobre aquella
plaza inmensa llena de una compacta muchedumbre y
materialmente empedrada de cabezas, se cernió un silencio de
muerte.
Miramón estaba erguido y firme en su caballo, en medio de sus
tropas; don Jaime y sus compañeros habían tomado sitio entre el
estado mayor que rodeaba al general.
Después de un momento de perplejidad, el presidente dirigió una
triste y postrer mirada al sombrío y silencioso palacio presidencial,
en él que no brillaba luz alguna, y luego dio en voz potente la orden
de marcha.
Las tropas se pusieron en movimiento, y a compás y de todas partes
partieron gritos de ¡viva Miramón!
—Ya me echan de menos, dijo éste inclinándose hasta el oído de don
Jaime, y eso que aún no he partido.
Las tropas atravesaron lentamente la ciudad, seguidas de la
multitud, que al rendir este último tributo al presidente caído,
parecía como si quisiese demostrarle la estimación en que le tenía
personalmente.
Por fin a las dos de la madrugada se encontraron los expedicionarios
en campo raso, y pronto la ciudad no apareció sino como un punto
luminoso en el horizonte.
Las tropas marchaban tristes y silenciosas, y buen rato hacía que
emprendieran la caminata, cuando prontamente pareció que en las
filas reinase una agitación sorda.
—¡Alerta! algo se prepara, dijo don Jaime en voz queda a sus
amigos.
A no tardar la agitación fue en aumento, y en la vanguardia se
oyeron algunos gritos.
—¿Qué ocurre? preguntó Miramón.
—Los soldados se sublevan, le respondió don Jaime sin ambages.
—No puede ser, exclamó el general.
Al mismo instante reventó una de gritos y silbidos, entre los que
sobresalían estas voces:
—¡Viva Juárez! ¡El hacha! ¡el hacha!
El hacha en Méjico es el símbolo de la federación, y aclamarla es
sublevarse, o más bien dicho pronunciarse.
El grito ¡el hacha! recorrió con rapidez todas las filas, hasta hacerse
unánime, y pronto llegaron al colmo la confusión y el desorden.
Los partidarios de Juárez, confundidos con los soldados, proferían
amenazas de muerte contra los enemigos a quienes no querían dejar
escapar, y desenvainando los sables y afianzando las lanzas en el
ristre se hizo inminente un conflicto.
—Es preciso huir, general, dijo don Jaime a Miramón.
—¡Nunca! respondió éste; moriré con mis amigos.
—Va V. a perecer asesinado sin lograr salvarse; por otra parte, vea
V., ellos mismos le abandonan.
Era cierto, los amigos del presidente se habían desbandado y huían
en todas direcciones.
—¿Qué hacer? preguntó Miramón.
—Abrirnos paso, respondió don Jaime.
Y sin dar al presidente lugar a la reflexión.
—¡Adelante! gritó en voz de trueno a los suyos.
Al mismo tiempo los sublevados se revolvían, con las lanzas en el
ristre, contra el exiguo grupo en el centro del cual estaba Miramón.
Por espacio de algunos segundos la lucha fue espantosa: don Jaime
y sus amigos, bien montados y sobre todo bien armados,
consiguieron por último abrirse paso conduciendo al general en
medio de ellos.
Entonces empezó una carrera vertiginosa.
—¿A dónde vamos? preguntó el presidente.
—A Méjico, respondió don Jaime; es el único sitio donde no
pensarán en buscarle a V.
Una hora después penetraban de nuevo en la ciudad, confundidos
con los soldados desbandados que proferían ensordecedores vivas a
Juárez y gritando ellos solos más que todos los que les rodeaban.
Ya en la ciudad, Miramón y don Jaime se separaron de sus amigos,
pues la prudencia exigía que los fugitivos se retirasen a sus casas
uno a uno.
A las cuatro de la madrugada estaban todos reunidos y en
seguridad.
Las tropas de Juárez entraron en Méjico sólo algunas horas antes de
lo que hiciese el general Ortega.
Gracias a las disposiciones tomadas de con concierto entre el
general Berriozábal y los residentes extranjeros, el cambio de
gobierno se había operado casi sin conmoción: al día siguiente
Méjico parecía tan tranquilo como si en su seno no hubiese ocurrido
nada.
Sin embargo, don Jaime no tenía confianza alguna en aquella calma
aparente; temía que de permanecer Miramón algunos días en la
ciudad no acabase por ser conocida su presencia en ella. Así es que
buscaba ocasión propicia para hacerle evadir, y ya empezaba a
desesperar de conseguirlo, cuando el acaso le ofreció una, en la que
estaba por cierto muy distante de contar.
Habían transcurrido muchos días; la revolución estaba hecha y todo
caminaba por su cauce ordinario, cuando por fin Juárez llegó de
Veracruz e hizo su entrada en la capital.
Lo primero que, conforme previera Miramón, hizo el nuevo
presidente, fue dar una orden de expulsión contra el embajador de
España, el legado pontificio y los representantes de Guatemala y del
Ecuador.
La ocasión que don Jaime buscaba tanto tiempo hacia, se le
presentaba por fin.
Miramón partiría no con el embajador de España, sino con el
representante de Guatemala.
Y así sucedió.
La partida de los diplomáticos expulsados se efectuó el mismo día:
eran éstos el embajador de España, el legado pontificio, el
representante de Guatemala y el del Ecuador; además, el arzobispo
de Méjico y cinco obispos mejicanos que componían todo el
episcopado de la confederación y habían sido desterrados, se
aprovecharon de la escolta del embajador para abandonar la capital.
Miramón, la esposa y los hijos del cual habían partido hacía ya
algunos días, seguía, vestido con un disfraz que le hacía de todo
punto desconocido, al representante de Guatemala.
En cuanto a Luis del Saulay y al duque de Tobar, tomaron el camino
de Veracruz escoltando a doña María y a las dos jóvenes.
Don Jaime, que no quiso abandonar a su amigo, viajaba con éste en
compañía de López.
Únicamente don Esteban se había quedado en la capital.
Dos días después el Velasco de la marina de guerra española, hacía
rumbo a la Habana, llevando a bordo todos nuestros personajes.
El 15 de enero de 1863 se efectuaron dos bodas en la hermosa
capital de la isla de Cuba: la del conde del Saulay con doña Carmen
de Tobar, y la del duque de este título con doña Dolores de la Cruz,
siendo testigos el embajador de España en Méjico, el general
Miramón, el comandante del Velasco y el ex-representante de
Guatemala, y oficiante el legado del papa.
FIN

Traducción de Luis CALVO.

ÍNDICE

TOMO SEGUNDO
I. Complicaciones.
II. La sorpresa.
III.Los prisioneros.
IV. Don Diego.
V. La cena.
VI. Revelación.
VII. El vengador.
VIII. Horas de sol.
IX. Un hombre de bien.
X. Amor.
XI. Sorpresa.
XII. La salida.
XIII. Triunfo.
XIV. El Palo Quemado.
XV. Saldo de cuentas.
XVI. Resolución suprema.
XVII. Jesús Domínguez.
XVIII. Principio del fin.
XIX. Golpe de gracia.
XX. Cara a cara.
XXI. Epílogo. El hacha.
*** END OF THE PROJECT GUTENBERG EBOOK LAS NOCHES
MEJICANAS ***

Updated editions will replace the previous one—the old editions will
be renamed.

Creating the works from print editions not protected by U.S.


copyright law means that no one owns a United States copyright in
these works, so the Foundation (and you!) can copy and distribute it
in the United States without permission and without paying
copyright royalties. Special rules, set forth in the General Terms of
Use part of this license, apply to copying and distributing Project
Gutenberg™ electronic works to protect the PROJECT GUTENBERG™
concept and trademark. Project Gutenberg is a registered trademark,
and may not be used if you charge for an eBook, except by following
the terms of the trademark license, including paying royalties for use
of the Project Gutenberg trademark. If you do not charge anything
for copies of this eBook, complying with the trademark license is
very easy. You may use this eBook for nearly any purpose such as
creation of derivative works, reports, performances and research.
Project Gutenberg eBooks may be modified and printed and given
away—you may do practically ANYTHING in the United States with
eBooks not protected by U.S. copyright law. Redistribution is subject
to the trademark license, especially commercial redistribution.

START: FULL LICENSE


Welcome to our website – the ideal destination for book lovers and
knowledge seekers. With a mission to inspire endlessly, we offer a
vast collection of books, ranging from classic literary works to
specialized publications, self-development books, and children's
literature. Each book is a new journey of discovery, expanding
knowledge and enriching the soul of the reade

Our website is not just a platform for buying books, but a bridge
connecting readers to the timeless values of culture and wisdom. With
an elegant, user-friendly interface and an intelligent search system,
we are committed to providing a quick and convenient shopping
experience. Additionally, our special promotions and home delivery
services ensure that you save time and fully enjoy the joy of reading.

Let us accompany you on the journey of exploring knowledge and


personal growth!

ebooknice.com

You might also like