六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 26|回复: 0

部分Dojo常用函数简介(四)——String及Array扩展

[复制链接]

升级  23.45%

473

主题

473

主题

473

主题

探花

Rank: 6Rank: 6

积分
1469
 楼主| 发表于 2013-1-29 09:20:50 | 显示全部楼层 |阅读模式
每个Ajax 框架都对Javascript 做了扩展,提供了很多常用函数,增强了 Javascript 的开发效率。在这里将对部分Dojo 中的常用函数做简单的介绍。由于Dojo的常用函数较多,也为方便大家阅读,将这些常用函数分为了五个类别分别进行介绍。本文将介绍第四部分的内容:String及Array扩展。

* 本系列博文的绝大多数内容来自于对dojocampus.org上的dojo reference guide文档的翻译,在此也特别感谢文档的翻译者们:Fei Jia, Zhu Xiao Wen, Li Wen Bing, Zhang Jun, Hu Kuang, Huang Wei, Wu Min Qi, Mo Ying, Cheng Fu, Zhong Si Qi
dojo.forEach, dojo.some, dojo.every, dojo.map

dojo.forEach的作用及用法类似于标准的array的forEach方法(参见JavaScript 1.6 forEach()),用于循环数组中的所有元素,该方法兼容所有的主流浏览器。一般的循环写法为:
for(var i=0; i<queueEntries.length; i++){    console.debug(queueEntries, "at index", i);}
类似的循环可以用dojo.forEach替代:
dojo.forEach(queueEntries, function(entry, i){    console.debug(entry, "at index", i);});
可是,forEach并不能根据提供的条件中断循环的执行,如果想要使循环在一定条件下终止,则应该使用dojo.some()或dojo.every()方法,它们都会返回一个boolean变量,dojo.some用于判断是否数组中有任何满足给定条件的元素,如果循环到任一满足条件的元素则跳出循环并返回true;而dojo.every则用于判断是否所有的元素都满足给定的条件,如果循环到任一不满足条件的元素则跳出循环并返回false。下面是这两个方法的示例:
var arr = [200000, 500000, 350000, 1000000, 75, 3];if (dojo.some(arr, function(item) {    return item >= 1000000})) {    result = 'yes, there are';} else {    result = 'no, there aren no such items';}if(dojo.every(arr, function(item){    return item >= 1000000})) {    result = “yes, all they are”;} else {    result = ”no, not all”;}
dojo.forEach, dojo.some, dojo.every都接收第三个参数用以指定回调函数的作用域。

dojo.map可以用于对给定的数组中的每个元素调用指定的回调函数,并返回处理后的一个新数组,具体用法参看下面的示例:
var arrValues = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]var doubleValue = dojo.map(arrValues, function(item) {    return item * 2;});Console.log(doubleValue); // output: [2, 4, 6, 8, 10, 12, 14, 16, 18, 20]
dojo.indexOf

顾名思义,dojo.indexOf用于返回给定元素在指定数组中的索引号(index),由于数组索引是由0开始的,如果该数组存在给定元素,会返回一个大于等于0的正整数,否则返回-1,参见下面的示例:
var arr = [ 1, 2, 3, 4, 5 ];var idx = dojo.indexOf(arr, 1); // returns 0var idx2 = dojo.indexOf(arr, 6) // returns -1
dojo.filter

返回满足给定数组中回调函数中规定条件的元素组成的新数组,用法参看下面的示例:
var arr = [ 1, 2, 3, 4, 5 ];var newArr = dojo.filter(attr, function(item){    return item > 3;});console.log(newArr); // ouput: [4, 5]
dojo.trim

dojo.trim用于移除给定字符串参数的前后空格,只接收一个参数,要进行处理的字符串:
function show(str){    return "|" + dojo.trim(str) + "|";}var output1 = show("   one");// |one|var output2 = show("two ");// |two|var output3 = show("   three ");// |three|var output4 = show("\tfour\r\n");// |four|var output5 = show("\f\n\r\t\vF I V E\f\n\r\t\v");// |F I V E|
dojo.replace


dojo.replace是一个轻量级的字符串替换、连接的工具函数,需要注意的是该方法并不能很好的支持本地化。

该函数可接受3个参数:要进行替换部分内容的字符串模板,提供替换内容的JSON对象,以及一个可选参数,是正则表达式模板用于规定什么样的内容将会被替换,默认情况下,该模板为一个类似于{abc}的字符串。具体用法参看下面的示例:
var output = dojo.replace(    "Hello, {name.first} {name.last} AKA {nick}!",    {        name: {          first:  "Robert",          middle: "X",          last:   "Cringely"        },        nick: "Bob"    });
以上就是String及Array对象的一些扩展函数,在下一部分中,会介绍关于Dojo对于事件处理及Ajax I/O的一些扩展函数。
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表