Although this set of key can only be String type, unlike the Java inside a variety of collection classes can use a variety of objects as a key, but for the implementation of the general client JS function, is enough to use. Similarly, because all of the JS internal objects are inherited from object objects, the actual JS array object can also use a string as the subscript for an array, as in PHP. From the bird food porch.
An array is an internal object provided by JavaScript, it is a standard set, we can add (push), delete (shift) elements, and we can iterate through the elements in the for loop, so can we have any other collection in JavaScript except the array?
Because of the language characteristics of JavaScript, we can dynamically add and remove properties to common objects. So object can also be considered as a special set of JS. Here's a comparison of the array and object features:
Array:
NEW: var ary = new Array (); or var ary = [];
Increase: Ary.push (value);
Delete: delete Ary[n];
Traversal: for (var i=0 i < ary.length; ++i) ary[i];
Object:
NEW: var obj = new Object (); or var obj = {};
Add: Obj[key] = value; (Key is String)
Delete: delete Obj[key];
Traversal: for (var key in obj) Obj[key];
From the comparison above, you can see that object can be used as a collection, and in creating an infinite-level Web page menu (3) using the popup window I introduced the __menucache__ that Eric implemented, which is a mock collection object.
If we want to retrieve a specified value in the array, we need to traverse the entire array:
Copy Code code as follows:
var keyword =;
for (Var i=0 i < ary.length; ++i)
{
if (ary[i] = = keyword)
{
Todo
}
}
And we retrieve an entry for the specified key in object, which is only required to use:
var key = ';
var value = Obj[key];
Todo
This feature of object can be used to efficiently retrieve a unique set of strings, and the time complexity of traversing an array is O (n), while the time complexity of traversing the object is O (1). Although for the 10,000 collection for retrieval cost is also dozens of MS, but if it is 1000*1000 or more, the advantage of using the object is reflected. Before that I made a mapping that took 100 unique characters mapping to 1000 string arrays, time-consuming 25-30s! Later, the for traversal was changed to the member reference of the set of object simulation, the same amount of data mapping, only 1.7-2S!!!
For the traversal efficiency of the set (from high to low): var value = Obj[key]; > for (;;) > for (in). The least efficient is for (in), and if the collection is too large, try not to use for (in) traversal.