首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 网站建设 > ASP > JavaScript Associative Arrays
【标  题】:JavaScript Associative Arrays
【关键字】:JavaScript,Associative,Arrays
【来  源】:http://blog.csdn.net/coofucoo/archive/2006/04/22/673335.aspx

JavaScript Associative Arrays

URL: http://persistent.info/archives/2004/08/27/js-associative-arrays

There seems to be some confusion regarding associative arrays in JavaScript (i.e. doing searches on the matter turns up many pages giving wrong information). First of all, these arrays (which act as hash tables) have nothing to do with the built-in Array object. They simply rely on the fact that object.property is the same as object["property"]. This means that the length property is not used, nor do any Array methods (such as join) do anything. In fact, it is better to create the associative array using the generic Object() constructor to make this clearer.

The way to iterate over the items in an associate array is to use the for (value in array) construct, allowing you to access each item's value via array[value]. It appears that the order in which properties (i.e. items) are traversed is implementation dependent. The ECMAScript specification is pretty vague on the matter, saying (in section 12.6.4) "Get name of the next property of [the object] that doesn't have the DontEnum attribute. If there is no such property, go to [the end]". Firefox, Safari and MSIE appear to traverse items in the order in which they were inserted, while KHTML (within KDE 3.1) and Opera (at least through 7.54) use a seemingly random order that presumably reflects their respective hashtable implementations.

The iteration order can be tested using a very simple code snippet such as this (click here to run it):

var items = {"dioxanes": 0,  "shunning": 1,  "plowed": 2,
"hoodlumism": 3, "cull": 4, "learnings": 5,
"transmutes": 6, "cornels": 7, "undergrowths": 8,
"hobble": 9, "peplumed": 10, "fluffily": 11,
"leadoff": 12, "dilemmas": 13, "firers": 14,
"farmworks": 15, "anterior": 16, "flagpole": 17};

listString = "";
for (var word in items)
listString += items[word] + ", ";

alert(listString);

If the list of numbers appears in ascending order, then the browser preserves the insertion order. If you are in fact looking to traverse the object's properties in the order they were inserted in, regardless of browser implementation, you'll have to create a (possibly double) linked list that you can use to jump from object to object.

2006-4-22 ASP VBScript 分页函数 by Stabx, 2006-04-22:【上一篇】
Objects as associative arrays:【下一篇】
【相关文章】
  • 常用的几个javascript语句
  • javascript数组运用-解决多个单选框状态检查
  • javascript代码收集
  • 如何用javascript来实现autocomplete
  • 侃侃JavaScript Template
  • SVG + Javascript + ASP.NET + WebService开发楼宇管理系统(六)
  • javascript触发事件汇总
  • RAID:Redundant Arrays of Independent Disks
  • 用JavaScript改进你的网页框架
  • JavaScript学习(三)
  • 【随机文章】
  • 网络防火墙的系统解决方案(1)
  • Linux Troubleshooting
  • 今天下午参加的一次微软.NET开发讲座(流水版)
  • Linux 核心--linux内核机制
  • 招聘软件开发工程师---华为三康技术有限公司
  • 博客站务公告
  • SNMP住处采集!
  • pb函数库之其他函数
  • WLAN+移动IP:让自由移动成为可能
  • 移动文件系统到一个新的卷组
  • 【相关评论】
    没有相关评论
    【发表评论】
    姓名:
    邮件:
    随机码*
    评论*
          
    |  首 页  |  版权声明  |  联系我们   |  网站地图  |
    CopyRight © 2004-2007 软讯网络 All Rigths Reserved.