数组是JavaScript提供的一个内部对象,它是一个标准的集合,我们可以添加(push)、删除(shift)里面元素,我们还可以通过for循环遍历里面的元素,那么除了数组我们在JavaScript里还可以有别的集合吗?
由于JavaScript的语言特性,我们可以向通用对象动态添加和删除属性。所以Object也可以看成是JS的一种特殊的集合。下面比较一下Array和Object的特性:
Array:
新建:var ary = new
Array(); 或 var ary = [];
增加:ary.push(value);
删除:delete ary[n];
遍历:for ( var i=0 ; i <
ary.length ; ++i ) ary[i];
Object:
新建:var obj = new
Object(); 或 var obj = {};
增加:obj[key] = value;
(key为string)
删除:delete obj[key];
遍历:for ( var key in obj ) obj[key];
从上面的比较可以看出Object完全可以作为一个集合来使用, 如果我们要在Array中检索出一个指定的值,我们需要遍历整个数组:
var keyword = ;
for ( var i=0 ; i < ary.length ; ++i )
{
if ( ary[i] == keyword )
{
// todo
}
}
而我们在Object中检索一个指定的key的条目,只需要是要使用:
var key = '';
var value = obj[key];
// todo
Object的这个特性可以用来高效的检索Unique的字符串集合,遍历Array的时间复杂度是O(n),而遍历Object的时间复杂度是O(1)。虽然对于10000次集合的for检索代价也就几十ms,可是如果是1000*1000次检索或更多,使用Object的优势一下就体现出来了。在此之前我做了一个mapping,把100个Unique的字符mapping到1000个字符串数组上,耗时25-30s!后来把for遍历改成了Object模拟的集合的成员引用,同样的数据量mapping,耗时仅1.7-2s!!!
对于集合的遍历效率(从高到低):var value = obj[key]; > for ( ; ; )
> for ( in
)。效率最差的就是for( in
)了,如果集合过大,尽量不要使用for ( in
)遍历。
Array也是可以用字符串做下标的啊, 在这一点上和object没什么不同
Array是从Object继承下来的,所以Array具有Object有的任何能力,这是OO范畴说的东西。
其实 js 中的 Array
也能做到C#中的hashtable那样的功能。
var array = new Array();
array["First"] =
"First";
array["Second"] = "Second";
array["Third"] = "Third";
分享到:
相关推荐
`test.html` 和 `使用说明.txt` 可能是用来测试这些JavaScript文件功能的HTML页面和相关说明文档,通过运行test.html并查看控制台输出,我们可以验证和理解`array.js` 和 `map.js` 中代码的实际效果。 在实际开发中...
使用js实现map工具类
* Map对象,实现map功能 * put(key, value) 向map中增加键值对 * 例子: * var map = new Map(); * * map.put("key", "value"); * var val = map.get("key");
部分IE浏览器不支持ecmascript 6,无法使用map对象,用原生js对象实现map功能
实现Map功能 在JavaScript中,虽然已经有了内置的`Map`,但理解其实现原理对我们学习和使用这个数据结构大有裨益。下面是一个简单的`Map`实现示例: ```javascript class SimpleMap { constructor() { this....
javascript实现map,极其方便,可在需要当前页处理多数据时使用
在JavaScript编程中,Array和Map是两种非常重要的数据结构,它们各自有其独特的作用和应用场景。...同时,自定义实现也可以作为扩展JavaScript功能的一个起点,让你能够根据项目需求定制更适合的数据结构。
本篇文章将深入探讨`Map`的JS实现,并通过提供的`map.js`文件来理解其内部工作原理。 `Map`对象的主要特性包括: 1. **键的多样性**:与对象的键必须是字符串或符号不同,`Map`的键可以是任何JavaScript值。 2. **...
js模仿java的Map集合,实现功能。size()方法,put()方法,remove()方法等
### 在JavaScript中实现Map对象 #### 一、引言 在JavaScript中,原生支持了多种数据结构,其中数组(Array)是最为常见的数据结构之一。然而,在某些应用场景下,我们可能需要一种能够根据键(key)快速查找值(value)的...
在这个"Java实现Map集合二级联动示例中国省市例子"中,我们将探讨如何使用Map来构建一个二级联动的功能,常见于如中国省市选择的场景。这个场景通常出现在需要用户首先选择省份,然后根据所选省份展示对应的市的选择...
**自定义实现Map的思路** 1. **数据结构**:首先,我们需要一个数据结构来存储键值对,可以使用数组或对象。数组可以按照特定格式(如[key, value])存储,而对象则需要处理键的唯一性。 2. **size属性**:维护一...
### JavaScript中的Map应用 在JavaScript中,`Map`对象是一种内置的数据结构,它保存键值对,并且可以按插入顺序记住元素。与普通的JavaScript对象不同的是,`Map`的键可以是任何类型的值(不仅仅是字符串或符号)...
百度地图MAP JS是百度地图提供的JavaScript库,它允许开发者在网页上集成百度地图功能,实现地图的显示、标注、路线规划等多样化操作。这个库基于JavaScript语言,能够轻松地与HTML和CSS结合,为网页增添动态和交互...
在JavaScript的世界里,`Map`对象是一个非常重要的数据结构,它允许我们存储键值对,其中键可以是任何类型的...在阅读`MapUtil.js`源码时,可以关注这些方法的实现细节,理解它们如何优化和扩展了原生`Map`对象的能力。
在JavaScript环境下,通过Google Maps JavaScript API,开发者可以将这些功能集成到自己的网页应用中,实现丰富的地图交互效果。下面将详细介绍如何使用Google Maps API以及其主要功能。 首先,要使用Google Maps ...
在JavaScript中,尽管原生没有提供与Java完全相同的Map对象,但可以通过自定义对象或使用ES6提供的Map数据结构来实现类似的功能。本篇将详细探讨如何在JavaScript中模仿Java的Map对象,以及ES6 Map的数据结构和用法...
本文将深入探讨“JS.CSS.map.instance.hyperlink.rar”压缩包中的“CSS Map_js”和“js_map实例”,以及它们如何实现地图功能,特别是与超链接结合的经典案例。 首先,我们来理解CSS Map。CSS(Cascading Style ...
本文将深入探讨`Map`类型在JavaScript中的应用,并结合Echarts地图下钻功能,阐述如何利用`Map`类型处理地理数据,以及在实际项目中实现交互式地图的构建。 `Map`类型在ES6中被引入,它与传统的`Object`对象不同,`...
本文将深入探讨如何使用JavaScript实现一个简单的Map功能。 首先,我们来看一下提供的代码片段。这个自定义Map类包含以下方法: 1. **size()** - 返回Map中元素的数量,即键值对的数量。它通过返回存储元素的数组...