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

每个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[i], "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 0 var 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的一些扩展函数。

你可能感兴趣的:(JavaScript,function,String,扩展,dojo,output)