Javascript 1.6 定义了一些新的数组方法, 但是并不是所有浏览器都实现了 Javascript 1.6 , Dojo 为没有实现的浏览器提供扩展来实现它们.
-- dojo.indexOf 返回数组中匹配元素首次出现的位置, 未找到返回 -1
-- dojo.lastIndexOf 返回数组中匹配元素最后一次出现的位置, 未找到返回 -1
-- dojo.every 测试是否数组中所有元素都使测试函数返回 true
-- dojo.some 测试是否数组中存在元素使得测试函数返回 true
-- dojo.filter 返回一个新数组, 其元素是原数组中通过 filter 函数的元素
-- dojo.map 创建返回一个新数组, 其元素是用原数组每个元素调用传入函数的返回值
-- dojo.forEach 将数组中的每一个元素传给一个函数
除了前两个函数, 其它所有函数都有相同的函数签名, 如: dojo.every(array, func, context). array 是要操作的数组, func 是应用在每个数组项上的函数, 最后一个 context 则是执行 func 的上下文, 是可选参数.
如果传入了上下文参数, 获得回调函数可以用 dojo.hitch(context, func) 来获得.
例:
var arr = [1, 2, 3];
var doubleArray = dojo.map(arr, function(x) { return x *= 2 });
dojo.forEach(doubleArray, function(x) { console.log(x) });
// Output: 2, 4, 6
对于第二个参数函数有个有趣儿的用法, 当第二个参数是一个字符串的时候, item & index & array 这三个字符串就有了特殊的意义
-- item: 当前正在操作的某一个数组元素.
-- index: 当前正在操作的数组元素的索引
-- array: 数组对象
例:
var arr = [1, 2, 3];
var doubleArray = dojo.map(arr, "return item * 2");
dojo.forEach(doubleArray, "console.log(index + ' = ' + item)");
// Output:
// 0 = 2
// 1 = 4
// 2 = 6
(访问 https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array 查看详细 Javascript 1.6 Array)