`
junjie314
  • 浏览: 60259 次
  • 性别: Icon_minigender_1
  • 来自: 宁波
文章分类
社区版块
存档分类
最新评论

JavaScript中的数组、集合及效率

阅读更多
数组是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;

Object:

新建:var obj = new Object(); 或 var obj = {};
增加:obj[key] = value; (key为string)
删除:delete obj[key];
遍历:for ( var key in obj ) obj[key];

从上面的比较可以看出Object完全可以作为一个集合来使用,在使用Popup窗口创建无限级Web页菜单(3)中我介绍过Eric实现的那个__MenuCache__,它也就是一个模拟的集合对象。

如果我们要在Array中检索出一个指定的值,我们需要遍历整个数组:

  var keyword = ;
  for ( var i=0 ; i < ary.length ; ++i )
  {
  if ( ary == 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 )遍历。
分享到:
评论

相关推荐

    javascript中数组、对象

    JavaScript数组支持多种操作方法,如`push`(在末尾添加元素)、`pop`(移除并返回末尾元素)、`shift`(移除并返回首位元素)、`unshift`(在首位添加元素)、`slice`(截取子数组)、`splice`(插入、删除或替换...

    javascript中的数组对象以及json学习笔记

    在JavaScript中,数组对象和JSON(JavaScript Object Notation)是两种非常重要的数据结构,它们在处理和存储数据方面起着核心作用。这篇学习笔记将深入探讨这两种数据结构的特性和用法。 首先,我们来了解...

    比较JavaScript中的集合及其检索效率

    在探讨JavaScript中的集合及其检索效率时,我们主要关注两种数据结构:数组(Array)和对象(Object)。这两种数据结构在JavaScript中被广泛使用,各有其优势和适用场景,尤其是在处理大量数据时,它们的检索效率...

    JavaScript获取多个数组的交集

    同时,理解这些基本操作也有助于我们更好地掌握JavaScript数组处理的技巧。在阅读类似《JavaScript高级程序设计》这样的书籍,或者在iteye这样的技术社区中,你可以找到更多关于数组操作和算法优化的知识,不断提升...

    JavaScript数组特性与实践应用深入详解

    JavaScript数组是该语言中一种用于存储有序集合的数据结构,它的操作和特性非常丰富,为开发者处理数据集合提供了极大的便利。本文将深入探讨JavaScript数组的特性以及在实际编程中的应用。 首先,数组字面量是定义...

    js中三种遍历数组的效率.txt

    在给定的代码示例中,我们探讨了JavaScript中三种不同的方法来遍历数组或类数组对象,并评估了它们的性能。这段代码主要是通过创建一个简单的HTML页面,并在这个页面上实现了一个功能:根据用户输入的数字,动态生成...

    JavaScript程序设计-JavaScript数组.pptx

    数组在JavaScript中是一个有序的元素集合,每个元素可以通过一个唯一的索引来访问。数组的索引通常从0开始,这意味着第一个元素的索引是0,第二个元素的索引是1,依此类推。数组的长度是其包含的元素个数,可以通过`...

    JavaScript中的集合及效率

    在探讨JavaScript中的集合及其效率时,我们首先要了解JavaScript语言的一些核心特性,尤其是关于对象、数组以及它们作为集合的使用方式。JavaScript中的对象(Object)和数组(Array)都是重要的数据结构,它们都...

    javaScript数组操作笔迹

    下面将详细介绍标题与描述中提到的几个关键的JavaScript数组操作知识点。 ### join(delimiter) `join()` 方法用于将数组的所有元素连接成一个字符串,元素之间通过指定的分隔符 `delimiter` 进行分隔。例如,对于...

    collectjs是一个用于在JavaScript中处理数组和对象库

    这个库的主要目的是提供一种高效、便捷的方式来操作数据集合,它借鉴了Laravel框架中的Collections API,使得开发者在JavaScript环境中也能享受到类似的功能。在不依赖任何其他第三方库的情况下,`collect.js` 提供...

    javascript数组去重方法分析

    在JavaScript编程中,数组去重是一项常见的操作,特别是在处理数据集合...以上内容旨在帮助您理解和掌握JavaScript数组去重的方法,以及提高在实际开发中的效率。在实践中,可以根据数据规模和性能需求选择合适的方法。

    JavaScript数组去重1

    JavaScript数组去重是编程中常见的需求,特别是在处理数据集合时,确保数据的唯一性非常重要。以下将详细讲解几种常见的JavaScript数组去重方法。 1. **新建数组法**: 这是最基础的方法,通过创建一个新的空数组...

    java集合与数组的相同点和不同点

    在Java编程语言中,数组和集合都是用于存储和管理数据的结构,但它们在功能、灵活性和使用场景上存在显著的差异。以下是关于Java集合与数组的相同点和不同点的详细说明: 相同点: 1. 容器:无论是数组还是集合,...

    unity中各种数组使用的区别

    Javascript Arrays 是 Unity 中的一种特殊数组类型。它们只能在使用 Javascript 语法时使用,不能在 C# 中使用。Javascript Arrays 的优点是可以动态添加或删除元素,但其缺点是速度相对较慢。 ArrayLists ...

    JavaScript数组对象Array.pdf

    JavaScript中的Array对象是编程语言中处理有序数据集合的关键部分,它允许你在单个变量中存储多个值。...了解和熟练使用这些方法是JavaScript编程中的基础,它们极大地提高了处理数组数据的效率和灵活性。

    javascript数组去重3种方法的性能测试与比较

    本文将探讨三种不同的JavaScript数组去重方法,并对它们的性能进行测试和比较。 首先,我们来看第一种方法,这种方法是通过创建一个对象来存储数组元素作为键,利用JavaScript对象的特性,相同的键值不会被覆盖,...

    JavaScript二维数组实现的省市联动菜单_.docx

    在 JavaScript 中,二维数组是一种数据结构,可以用来存储大量的数据。在本文中,使用二维数组来存储城市列表项。二维数组的声明方式为 `var cities=[["安庆","合肥","桐城"],["石家庄","保定","唐山"],["郑州",...

    JavaScript中清空数组的三种方式

    在JavaScript中,数组是用于存储有序数据集合的一种重要的数据结构,而在实际开发中,我们有时需要清空数组。本文将详细讨论三种在JavaScript中清空数组的方法,并对它们的效率进行比较。 首先,我们可以使用 ...

    JavaScript对象与数组参考大全

    JavaScript数组拥有一系列内置方法,如`push()`(添加元素到末尾)、`pop()`(移除末尾元素)、`shift()`(移除首位元素)、`unshift()`(添加元素到首位)、`splice()`(插入/删除元素)、`slice()`(提取子数组)...

Global site tag (gtag.js) - Google Analytics