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

dojo 官方教程 中文翻译 Dojo官方教程中文翻译(完整版),欢迎大家下载参考。 立即下载

原题: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官方教程中文版 pdf 非扫描 dojo官方教程中文版 pdf 非扫描 。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。 立即下载

相关推荐

dojo精品中文教程(全)

分三个包上传时,第三个包好像传不上去,我给整合了一下,打在一个包里上传了! dojo精品中文教程 Dojo.1.0 Practice Note [1] 什么是dojo 选择dojo的理由 AJAX架构之Dojo篇 Adding Ajax中文版 (DoJo) DOJO学习笔记(七)-日期控件DropdownDatePicker和DatePicker DOJO常用的验证函数 Dojo with Adobe AIR Dojo 工具包教程 Dojo 快速安装 Dojo和JSON建立无限级AJAX动态加载的功能模块树 Dojo学习笔记( 模块与包) Dojo学习笔记-- djConfig解说 Dojo学习笔记-- dojo.dom Dojo学习笔记-- dojo.event & dojo.event.topic & dojo.event.browser Dojo学习笔记--DateTextbox Dojo学习笔记--Dojo的基础对象和方法 Dojo学习笔记--FisheyeList鱼眼效果 Dojo学习笔记--TabContainer Dojo学习笔记--ValidationTextbox Dojo学习笔记--dijit.Dialog Dojo学习笔记--dijit.Menu Dojo学习笔记--dijit.TitlePane Dojo学习笔记--dijit.Tooltip Dojo学习笔记--dijit.Tree Dojo学习笔记--dojo.graphics.color & dojo.uri.Uri Dojo学习笔记--dojo.string & dojo.lang Dojo学习笔记--动态生成widget Dojo学习笔记--开发自己的TitlePane Dojo学习笔记--页面部分区域遮挡,DialogUnderlay Dojo学习笔记(五)-djConfig详解 dojo data 接口详解 dojo0.9 使用心得 dojo学习笔记(一)-dojo.io.IO & dojo.io.BrowserIO) dojo学习笔记(三) dojo学习笔记(二) dojo.lang.array & dojo.lang.func & dojo.string.extras dojo学习笔记(六)- ContentPane dojo学习笔记(四) dojo的拖拽示例以及疑问! 介绍dojo事件 使用 Dojo 工具包和 JSON-RPC 构建企业 SOA Ajax 客户端 利用Dojo实现拖动(Drag and Drop)效果

Dojo1.11官方教程文档翻译(5.1)超越Dojo

Dojo区别于其他JavaScript库的一点就是它的作用范围。你可以简单的使用Dojo基础功能、DOM、Ajax、特效和其他常见功能,但其实Toolkit 提供的要多的多。在这篇教程中,我们将快速浏览Dojo Toolkit,介绍每个发行版本的一些其他装配组件。

碎梦道 1022

从零完成 STM32 + ESP-01S + 云服务器 TCP 通信测试

STM32 通过 USART3 控制 ESP-01S 接入手机 2.4 GHz 热点,随后连接公网云服务器 8.152.204.86:9002。云端在同一 TCP 连接中连续收到 seq=1~6 的测试报文,5 个发送间隔平均约 5.4 秒,说明本次 TCP 上行链路已经打通。

weixin_51387720的博客 312

Dojo官方文档(五)之小部件——①超越Dojo

Beyond Dojo原文地址:https://dojotoolkit.org/documentation/tutorials/1.10/beyond_dojo/index.html    Dojo区别于其他JavaScript库的地方在于Dojo的范围。虽然您可以简单地使用Dojo基础的功能,DOM、Ajax、effects和其他常用功能。工具包提供了更多的功能。在本教程中,我们将快速浏览doj...

不睡觉的怪叔叔的博客 461

免费测试国外大模型Claude 3.7 Sonnet API:无需api key(秘钥)

Claude 3.7 Sonnet是Anthropic公司推出的第三代Claude系列AI模型中的中规模版本(2024年发布),在性能与效率间实现平衡。该模型基于改进的Transformer架构,支持128K上下文窗口,擅长复杂推理、数学计算和创意写作,在GSM8K数学基准测试中准确率达92%。其采用"宪法AI"伦理框架,通过多轮对抗训练减少有害输出,同时新增多模态理解能力(可解析图片/图表内容)。Claude 3.7 Sonnet是Anthropic推出的高效轻量级大模型,主打快速响应与成本优化。

Explinks的博客 1497

基于R语言的DICE模型实践技术应用;预测不同减排路径下的经济增长、碳排放量、气候变化程度以及社会福利变化

DICE模型是一个动态综合气候经济模型,由诺贝尔经济学奖得主William Nordhaus开发,用于评估气候变化对经济的影响以及不同减排政策的经济成本和效益。以下是一个关于DICE模型在气候变化影响评估中的实际应用案例,结合R语言代码进行讲解。

KY_chenzhao的博客 869

Dojo官方教程:Charting

实现了用程序代码来创建饼图,而不是用声明式。教程里面说:建议用代码而不是声明式的,代码的创建方式更稳定更可控。 代码如下: <!DOCTYPE HTML> <html lang="en"> <head> <meta charset="utf-8"> <title>Demo: Basic Programmatic Chart</title> <link rel="styl...

只会写HelloWorld的专栏 336

使用ExcelJS向XLSX单元格居中插入图片

本文记录了使用ExcelJS库向XLSX单元格里居中写入图片的方法。本文内容包括:xlsx 文件格式;xlsx 图片定位的长度单位;使用nativeColOff和nativeRowOff进行定位,不要使用官网给的定位方式;添加图片到数据表的总体流程和样例代码;注意事项等。

weixin_43678000的博客 3456

Dojo 1.6 官方教程:Dojo中的事件

原题:Events with Dojo原文链接: http://dojotoolkit.org/documentation/tutorials/1.6/events/作者: Bran Forbes译者: wangqiang本文将与读者一同深入探究dojo.connect,如何使用Dojo来轻松的绑定DOM事件以及在原生对象上自定义事件。同时我们也将对Dojo

Dojo中文博客 2万+

​热电偶测温电路图(一)​

高精度热电偶测温电路图 此设计概括了提供传感器诊断所必需的抗混叠滤波器和偏置电阻器。此示例还提供了一种新颖的方式,即使用ADS1118上的板载温度传感器完成对系统的冷端补偿。对于热电偶线性化,此设计还提供了一种非常简单的、可以在大多数微控制器上实施的线性算法。 缺点就是太贵。 特性 测量K型热电偶温度 精度1°C 高精度/可重复性0.2°C 包含冷端补偿 包含软件算法 使用ADS111816位ADC(带PGA) 原理图/方框图 热电偶测温电路图(二) OP07构成的高稳定热电

zxm8513优快云博客 2万+

咨询进阶——解读40页公司战略解码方法【附全文阅读】

战略解码是将企业战略转化为可执行计划的关键过程,强调垂直和水平一致性原则。通过KPI指标设计和目标分解,确保战略在各部门和岗位有效落地。解码过程包括战略澄清、目标牵引、绩效分解和承诺签订,输出战略解码图等文件。不同部门根据责任定位(如利润中心、绩效中心)采用差异化考核方式,实现战略有效执行。

cdfunlove的博客 150

Dojo 1.6 最新官方教程: Hello Dojo!

 Hello Dojo作者:Sam Foster译者:ZhuXiaoWen原文:http://dojotoolkit.org/documentation/tutorials/1.6/hello_dojo/欢迎使用Dojo! 在本教程中,我们将从最基础的部分——一个简单的HTML页面开始。当本教程结束的时候,我们就已将Dojo加载到页面中,并且开始使用一些核心函数了。为了给您提供更为丰富的学习体验,我们还将简单介绍Dojo的模块化架构,并讨论如何载入依赖模块。难度:初学者Dojo版本:1.6让我们开始吧~我们

Dojo中文博客 2万+

JMeter压力测试全攻略:从入门到精通

本文系统讲解JMeter压力测试的完整流程与结果评估方法。开篇介绍压力测试的核心概念及JMeter工具特性,随后从环境搭建入手,详细说明JDK配置、JMeter安装及中文界面设置。主体部分围绕测试流程展开,涵盖测试计划创建、线程组参数调优、HTTP请求配置、断言与监听器添加等实操步骤;结果评估环节深入解析聚合报告指标、结果树分析及性能瓶颈定位方法,并通过电商接口测试案例演示全流程应用。文末总结关键要点,为读者提供从基础操作到分布式压测、性能调优的进阶学习方向,助力掌握JMeter在系统性能评估中的核心应用。

邓邓子的博客 2416

超导量子电路混合架构设计与CMOS兼容性研究

量子计算中的超导量子电路因其可控性和可扩展性成为主流技术路线。然而,传统超导量子比特面临CMOS工艺兼容性和长相干时间与电控调谐能力难以兼顾的挑战。本文提出了一种基于氮化铌(NbN)和Si-SiGe量子阱的混合架构解决方案,通过优化工艺和材料设计,实现了与CMOS工艺的兼容性,同时提升了频率调谐范围和磁场耐受性。该技术在量子计算和半导体工艺集成中具有重要应用价值,特别是在提升器件性能和简化制冷系统方面。关键词:超导量子电路、CMOS兼容性、氮化铌、Si-SiGe量子阱、频率调谐。

weixin_30314793的博客 285

(6)APB总线协议 —— 逻辑梳理(0.1认知)

这篇大家就差不多看看就行

CAUC_learner的博客 2702

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

Dojo1.11官方教程文档翻译(1.2)Hello Dojo!

Dojo官方教程文档翻译(1.1)Hello Dojo! 基本入门

碎梦道 1945

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Dojo 1.6 最新官方教程: 如何使用dojo.query 进行DOM查询和批量操作

在本讲义中,我们将学到DOM的查询,以及如何使用dojo.query来方便的查找并操作DOM节点。难度:初学者  适用的Dojo 版本: 1.6作者: Bryan Forbes译者: feijia原文连接: http://dojotoolkit.org/documentation/tutorials/1.6/using_query/ 入门对DOM编程的一个关键要素是能够快速高效的获取到你所要使用的节点。之前我们曾经介绍过使用dojo.byId来查找DOM节点的方法。但是,这种方法的局限性也很明显。你很难为页

Dojo中文博客 1万+

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Dojo 1.6 官方教程: DataGrid导引

原作者:Bryan Forbes 原文链接:http://dojotoolkit.org/documentation/tutorials/1.6/datagrid/译者:zhuxw (zhuxw1984@gmail.com)鉴于DataGrid对于表格数据的有效呈现,它早已成为许

Dojo中文博客 1万+

Dojo1.11官方教程文档翻译(1.4)新一代Dojo

1.3新的Dojo原文地址:https://dojotoolkit.org/documentation/tutorials/1.10/modern_dojo/index.html你或许很久不用Dojo了,或者你在1.10版本下用你1.6版的应用挣扎了很久却不知到底怎么回事。你可能经常听说AMD和baseless,但你不知道怎么做或者从哪开始。那么这个教程将会有所帮助。起步Dojo1.7是Dojo T

碎梦道 7599

Dojo1.6新特性:Dojo Object Stores

Dojo 1.6推出了一套新的名为Dojo Object Store的data store API。 这套基于HTML5 IndexedDB object store API的新store API旨在大大简化Dojo store的交互和构建。 这套新的API遵循HTTP/REST命名规范,并与dojox.storage providers(local storage, cookie storage, 和 WebSQL storage适用)以及其他所有符合这些开放标准的库兼容。 为了吸取dojo.da

Dojo中文博客 1万+

Dojo 1.6 官方教程翻译:创建基于模板的小部件(Widget)

创建 基于模板的小部件(Widget) 作者:Tom Trenka 原文链接:http://dojotoolkit.org/documentation/tutorials/1.6/templated/ 译者:  feijia  (tiimfei@gmail.com)

Dojo中文博客 1万+

Dojo1.11官方教程文档翻译(4.2)数组

在本教程中,你将了解Dojo针对JavaScript数组的跨平台解决方案:`dojo/_base/array`。 JavaScript规范已经提供了一些强大的数组方法,但不是所有的浏览器和环境都支持。Dojo的`dojo/_base/array`模块在数组的新旧方法之间搭起桥梁,让你可以用更少的代码更快、更高效的做更多的事。

碎梦道 700

Dojo1.11官方教程文档翻译(4.6)创建类

`dojo/_base/declare`模块是Dojo Toolkit里类创建的基础。`declare`允许多重继承来让开发者编写灵活的代码并避免重复同样的代码。Dojo、 Dijit 和 Dojox 模块都使用`declare`;在本教程中,你将了解为什么你也要用它。

碎梦道 670
上一篇: Dojo mobile TweetView 系列教程之三——Tweets和Mentions视图
下一篇: Dojo 1.6 官方教程:Dojo中的事件
dojotoolkit
博客等级 码龄16年 1205粉丝 61原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值