`
子衿青青
  • 浏览: 110937 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Dojo 1.6 官方教程:让数组变得简单

 
阅读更多

原题:Arrays Made Easy
原文链接: http://dojotoolkit.org/documentation/tutorials/1.6/arrays/
作者: Bran Forbes
译者: feijia (tiimfei@gmail.com)

在本教程中你将会学到如何使用dojo提供的跨平台的JavaScript数组操作

难度:初学者

适用Dojo版本:1.6

访问并操作数组是开发Web应用中的重要部分。JavaScript语言设计时就考虑到了这种需求,因此在语言层面已经加入了一些针对数组操作的方法来简化这一工作。遗憾的是不是所有浏览器都实现了同样的JavaScript标准。Dojo作为一个跨浏览器平台的框架提供了一系列数组操作方法,来弥补这一缺憾。

在数组中查找某个对象的位置

常用的数组操作之一就是在一个数组中查找某个元素,dojo为此提供了两个方法: dojo.indexOf 和dojo.lastIndexOf. dojo.indexOf 方法从前至后挨个的搜索数组中的元素,dojo.lastIndexOf则从后向前逐个搜索。 两个方法的参数是一样的,被搜索的数组,以及要查找的元素,还有一个可选的参数,即从何处开始搜索。
下面我们来看一个例子:


如果某元素没有找到,两个方法都会返回-1. 要注意这两个方法在搜索时都使用严格的比较操作(===),所以你除了可以查找简单数据类型(primitive), 你还可以查找对象


查看示例

遍历,循环


另一个常用的数组操作是循环遍历所有数组元素。使用传统的JavaScript代码通常可以写成这样

var item;
for(var i = 0; i < arr.length; i++){
item = arr[i];
// 对item进行操作
}

这样写的一个缺点是,如果你在一个事件处理函数中去访问item,你没法取到的你想要的作用域。(参考后面的例子)

使用dojo.forEach, 它提供了一个标准的方法来循环遍历数组,并且在作用域链查找时保留了元素。 它基本遵守Array.prototype.forEach的行为,只有两处不同:
1. dojo.forEach会遍历那些未定义的值:即便数组中存在一些未定义的值,它仍然会对该值执行操作。

2. dojo.forEach会在数组对象上直接遍历,而浏览器的forEach会在一个数组的拷贝上执行。 所以如果你在dojo.forEach 中对数组本身做了修改,这一修改将会生效。

下面让我们看一个例子



dojo.forEach 接受3个参数:被遍历的数组,回调函数(遍历的数组时,每个元素包括未定义的元素将作为参数传递给该回调函数), 以及一个可选的作用域对象,用来规定执行该回调函数时所用的作用域。

回调函数将会被反复执行,直到数组中最后一个有值的位置。 回调函数被调用时将会被传入3个参数,数组当前位置上的元素(可能是一个对象或一个原始值),当前位置的序号,以及一个数组的引用. 回调函数将会在指定的作用域中执行,如果forEach省略了第三个参数没有指定作用域,那么回调函数将会在全局的作用域中执行。

让我们在来看一下dojo.forEach的作用域参数究竟有什么好处


通过设定回调函数的作用域对象,使得回调函数能够在正确的作用域中被调用。 这种模式在对dojo widget编程时经常会用到,请牢记。

数组元素操作


Dojo 已经将数组的遍历简化了许多,接下来我们如果要想对数组中的元素做一些修改那该如何做呢?

假设我们有一个字符串数组,我们希望把其中的字符串转化成一组对象,并且每个对象的“name“属性就是字符串数组中的对应字符串。

根据我们前面已经学过的,我们可能写出如下代码



这样写当然没有错,不过现在新版的JavaScript和Dojo.map方法可以让代码进一步简化:


dojo.map的参数和forEach是一样的。 两者的区别是:dojo.map中回调函数的返回值将会被按顺序存储在一个新的数组中。而这个新数组就是dojo.map的返回值


另一个Dojo提供的常用转换功能是 dojo.filter。 顾名思义,它允许你在原有数组元素中根据一定规则和条件过滤出某些元素。当然,你也可以用forEach来写,但是使用dojo.filter 会将这一过程大大简化。


查看示例

匹配


在程序中我们有时需要判断数组中的某元素是否满足某些条件:例如你想知道其中是否有某些元素定义了error属性,或者你想确定是否数组中每个元素都定义了text属性。 这时就可以使用dojo.some 或dojo.every 方法。

这两个函数的签名和dojo.filter 完全一样,使用的回调函数也是一个返回布尔值的函数。 不过dojo.some 和dojo.every 两个函数本身不返回一个新数组,而是返回布尔值:dojo.every返回true表示,对数组中每个元素回调函数的都返回true,而dojo.some 返回true表示,数组中至少存在一个函数,对其调用回调函数时返回了true


小结


JavaScript规范提供了一系列强大的数组遍历和操作方法,但是不是所有的浏览器和运行时环境都能支持这些新规范中的方法。Dojo提供了跨平台的方案来弥补这一空缺,使用这些方法,可以减少代码行数,提升执行效率。

分享到:
评论

相关推荐

    dojo 1.6 api

    dojo 1.6 api包含dojo、dojox、dijit等3个部分的api。

    dojo1.6关于DOM相关操作的官方介绍

    2. **dojo.NodeList**: dojo.query返回的是一个dojo.NodeList对象,它扩展了Array原型,提供了许多便利的方法,如`forEach`、`filter`、`map`等,使得遍历和操作DOM节点变得更加简单。此外,NodeList还支持样式操作...

    Requirejs异步加载Dojo1.6

    本文将深入探讨如何使用Requirejs实现对Dojo 1.6版本的异步加载,并在Tomcat 6服务器环境下运行。 ### Requirejs:模块加载器 Requirejs是由James Burke创建的一个JavaScript库,它的主要功能是解决JavaScript的...

    dojo1.6官网

    Dojo 是一个强大的JavaScript工具库,它为Web开发提供了丰富的功能和组件,尤其在...此外,官方提供的代码示例是学习Dojo的最佳实践,它们涵盖了各种常见和复杂的功能实现,帮助开发者快速上手并掌握Dojo 1.6的精髓。

    dojo v1.6 官方最新版同步下载.zip

    标题中的"dojo v1.6 官方最新版同步下载.zip"指的是Dojo框架的1.6版本,这是一个官方发布的更新版本,可能包含了性能优化、新特性、修复的bug以及对之前版本的改进。 Dojo 1.6 版本主要知识点包括: 1. **模块系统...

    dojo 官方教程 中文翻译

    这个"dojo 官方教程 中文翻译"是针对Dojo框架的全面指南,帮助中文用户更好地理解和应用Dojo。 在Dojo官方教程中,你可以学习到以下核心知识点: 1. **Dojo基础**:了解Dojo的核心概念,如dojo/_base模块,这是...

    Dojo的高级运用:Widget的制作

    &lt;&lt;Dojo的高级运用:Widget的制作&gt;&gt; 和 使用Dojo和JSON构建Ajax应用&gt;&gt; 中涉及到的源代码 博文链接:https://tailsherry.iteye.com/blog/102907

    Dojo官方教程中文翻译完美版

    `dojo/store`让数据操作变得简单统一,增强了可重用性。 5. **dijit**:Dijit是Dojo的UI组件库,包含了各种丰富的界面元素,如按钮、表单、对话框等。这些组件遵循WAI-ARIA无障碍标准,确保了良好的用户体验。 6. ...

    dojo精品中文教程(全)

    dojo精品中文教程 Dojo.1.0 Practice Note [1] 什么是dojo 选择dojo的理由 AJAX架构之Dojo篇 Adding Ajax中文版 (DoJo) DOJO学习笔记(七)-日期控件DropdownDatePicker和DatePicker DOJO常用的验证函数 ...

    Dojo 1.10版离线参考手册

    - `dojo/_base`:包含Dojo的基本功能,如事件处理、对象创建、数组操作等。 - `dojo/dom`:提供了操作HTML元素的函数,包括获取、设置属性和样式,以及事件绑定等。 - `dojo/on`:事件处理模块,支持DOM事件和...

    DOJO开发指南(结合DOJO中国及网上的资料整理的结果)

    【DOJO开发指南】 DOJO 是一个开源的JavaScript工具库,设计用于简化Web应用程序的开发,特别是富互联网应用(RIA)。它由多个组件组成,包括基础的JavaScript代码库、组件库、工具集以及一系列用于处理不同任务的...

    dojo权威入门教程

    此外,Dojo的数据绑定机制使得视图与模型之间的同步变得更加简单。DataStore是Dojo用来存储和管理数据的组件,它可以连接到各种数据源,如XML、JSON等。你将学习如何使用DataStore与Widgets配合,实现动态数据展示和...

    dojo教程 dojo 教程大全

    精通Dojo(中文版),之前自己学习的时候看的,质量挺高,百度网盘地址

    Dojo框架使用教程

    本教程将深入探讨Dojo框架的使用,帮助开发者更好地理解和应用这一工具。 首先,从`dojo-release-0.9.0.tar.gz`这个文件名可以看出,这是一个Dojo框架的早期版本,版本号为0.9.0。在学习过程中,了解不同版本间的...

    dojo相关详细资料

    Dojo 是一个强大的JavaScript工具库,它为Web开发提供了丰富的功能和组件,涵盖了从DOM操作、事件处理到AJAX通信、动画效果等各个方面。在深入理解Dojo之前,我们需要了解JavaScript在网页开发中的核心地位以及它...

    dojo-release-1.6.1-src.zip

    7. **Dojo Effects 和 Animations**: Dojo 提供了一套强大的效果和动画库,包括简单的淡入淡出、复杂的路径动画等。 8. **Dojo Loader**: 作为AMD模块加载器,Dojo Loader负责解析依赖关系,按需加载模块,提升页面...

    dojo官方教程中文版 pdf 非扫描

    其中,模块化系统(AMD,Asynchronous Module Definition)是Dojo的一个重要创新,它使得在大型项目中管理JavaScript代码变得有序和高效。通过require和define方法,开发者可以组织和加载模块,实现代码的按需加载和...

    dojo链接数据mySQL,使用post方式发送数组

    dojo1.9使用post方式发送数组,链接数据库,并将返回的数据进行解析。

Global site tag (gtag.js) - Google Analytics