`
kennethf6986
  • 浏览: 68976 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

JS也能实现Map的功能

阅读更多

       数组是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";

分享到:
评论

相关推荐

    JavaScript实现Array(数组)和Map

    `test.html` 和 `使用说明.txt` 可能是用来测试这些JavaScript文件功能的HTML页面和相关说明文档,通过运行test.html并查看控制台输出,我们可以验证和理解`array.js` 和 `map.js` 中代码的实际效果。 在实际开发中...

    使用js实现map功能

    使用js实现map工具类

    用js实现map功能

    * Map对象,实现map功能 * put(key, value) 向map中增加键值对 * 例子: * var map = new Map(); * * map.put("key", "value"); * var val = map.get("key");

    用JS对象实现map功能与方法

    部分IE浏览器不支持ecmascript 6,无法使用map对象,用原生js对象实现map功能

    利用js实现Map

    实现Map功能 在JavaScript中,虽然已经有了内置的`Map`,但理解其实现原理对我们学习和使用这个数据结构大有裨益。下面是一个简单的`Map`实现示例: ```javascript class SimpleMap { constructor() { this....

    javascript实现map功能极其方便

    javascript实现map,极其方便,可在需要当前页处理多数据时使用

    JavaScript 实现Array(数组)和Map

    在JavaScript编程中,Array和Map是两种非常重要的数据结构,它们各自有其独特的作用和应用场景。...同时,自定义实现也可以作为扩展JavaScript功能的一个起点,让你能够根据项目需求定制更适合的数据结构。

    map的js实现

    本篇文章将深入探讨`Map`的JS实现,并通过提供的`map.js`文件来理解其内部工作原理。 `Map`对象的主要特性包括: 1. **键的多样性**:与对象的键必须是字符串或符号不同,`Map`的键可以是任何JavaScript值。 2. **...

    js模仿java的Map集合,实现功能

    js模仿java的Map集合,实现功能。size()方法,put()方法,remove()方法等

    在JavaScript中实现map对象

    ### 在JavaScript中实现Map对象 #### 一、引言 在JavaScript中,原生支持了多种数据结构,其中数组(Array)是最为常见的数据结构之一。然而,在某些应用场景下,我们可能需要一种能够根据键(key)快速查找值(value)的...

    Java实现Map集合二级联动示例

    在这个"Java实现Map集合二级联动示例中国省市例子"中,我们将探讨如何使用Map来构建一个二级联动的功能,常见于如中国省市选择的场景。这个场景通常出现在需要用户首先选择省份,然后根据所选省份展示对应的市的选择...

    Javascript 中类似Map集合的实现键值对

    **自定义实现Map的思路** 1. **数据结构**:首先,我们需要一个数据结构来存储键值对,可以使用数组或对象。数组可以按照特定格式(如[key, value])存储,而对象则需要处理键的唯一性。 2. **size属性**:维护一...

    js中Map应用

    ### JavaScript中的Map应用 在JavaScript中,`Map`对象是一种内置的数据结构,它保存键值对,并且可以按插入顺序记住元素。与普通的JavaScript对象不同的是,`Map`的键可以是任何类型的值(不仅仅是字符串或符号)...

    百度地图MAP JS

    百度地图MAP JS是百度地图提供的JavaScript库,它允许开发者在网页上集成百度地图功能,实现地图的显示、标注、路线规划等多样化操作。这个库基于JavaScript语言,能够轻松地与HTML和CSS结合,为网页增添动态和交互...

    js Map 工具类 MapUtil

    在JavaScript的世界里,`Map`对象是一个非常重要的数据结构,它允许我们存储键值对,其中键可以是任何类型的...在阅读`MapUtil.js`源码时,可以关注这些方法的实现细节,理解它们如何优化和扩展了原生`Map`对象的能力。

    googlemap 地图功能

    在JavaScript环境下,通过Google Maps JavaScript API,开发者可以将这些功能集成到自己的网页应用中,实现丰富的地图交互效果。下面将详细介绍如何使用Google Maps API以及其主要功能。 首先,要使用Google Maps ...

    js仿java的map对象

    在JavaScript中,尽管原生没有提供与Java完全相同的Map对象,但可以通过自定义对象或使用ES6提供的Map数据结构来实现类似的功能。本篇将详细探讨如何在JavaScript中模仿Java的Map对象,以及ES6 Map的数据结构和用法...

    JS.CSS.map.instance.hyperlink.rar_css Map_js 地图_js map实例_js 地图_

    本文将深入探讨“JS.CSS.map.instance.hyperlink.rar”压缩包中的“CSS Map_js”和“js_map实例”,以及它们如何实现地图功能,特别是与超链接结合的经典案例。 首先,我们来理解CSS Map。CSS(Cascading Style ...

    超好用map类型的js下载

    本文将深入探讨`Map`类型在JavaScript中的应用,并结合Echarts地图下钻功能,阐述如何利用`Map`类型处理地理数据,以及在实际项目中实现交互式地图的构建。 `Map`类型在ES6中被引入,它与传统的`Object`对象不同,`...

    JavaScript中实现map功能代码分享

    本文将深入探讨如何使用JavaScript实现一个简单的Map功能。 首先,我们来看一下提供的代码片段。这个自定义Map类包含以下方法: 1. **size()** - 返回Map中元素的数量,即键值对的数量。它通过返回存储元素的数组...

Global site tag (gtag.js) - Google Analytics