ECMAScript 6 introduces sets. Sets are collections of values and can be iterated in the order of the insertion of their elements. An important characteristic about sets is that a value can occur only once in a set.
The following snippet shows some basic operations on sets:
var mySet = new Set(); mySet.add(1); mySet.add("Howdy"); mySet.add("foo"); mySet.has(1); // true mySet.delete("foo"); mySet.size; // 2 for (let item of mySet) console.log(item); // 1 // "Howdy"
We discussed briefly that JavaScript arrays are not really arrays in a traditional sense. In JavaScript, arrays are objects that have the following characteristics:
length
propertyArray.prototype
(we will discuss this in the next chapter)When we write an array index as numbers, they get converted to strings—arr[0]
internally becomes arr["0"]
. Due to this, there are a few things that we need to be aware of when we use JavaScript arrays:
var testArr=new Array(3); console.log(testArr);
You will see the output as [undefined, undefined, undefined]
—undefined
is the default value stored on the array element.
Consider the following example:
var testArr=[]; testArr[3] = 10; testArr[10] = 3; console.log(testArr); // [undefined, undefined, undefined, 10, undefined, undefined, undefined, undefined, undefined, undefined, 3]
You can see that there are gaps in this array. Only two elements have elements and the rest are gaps with the default value. Knowing this helps you in a couple of things. Using the for...in
loop to iterate an array can result in unexpected results. Consider the following example:
var a = []; a[5] = 5; for (var i=0; i<a.length; i++) { console.log(a[i]); } // Iterates over numeric indexes from 0 to 5 // [undefined,undefined,undefined,undefined,undefined,5] for (var x in a) { console.log(x); } // Shows only the explicitly set index of "5", and ignores 0-4