首页 教程 API文档

变量元素遍历

2015-09-09 14:04:54

属性


使用频率 非常高
复杂程度 中低
成员类型 静态函数

描述


Std.each方法用于遍历一个数组的每个元素,对象的每个键,或者是对一个字符串进行拆分进行遍历.

Std.each方法在遍历过程中,每找到一个元素,都会执行一次回调函数.

Std.each方法在大多数情况下都可以直接替代for,for in

语法



Std.each(Array data,Function callback,Boolean makeReturn = false,String split = ' ');
Std.each(Object data,Function callback,Boolean makeReturn = false,String split = ' ');
Std.each(String data,Function callback,Boolean makeReturn = false,String split = ' ');
        

参数


名称 类型 描述
data Array,Object,String

需要进行遍历的数据,一个数组,对象,或者字符串

注意:在遍历一个object的时候,Std.each方法并没有做hasOwnProperty检查,如果遍历的是一个特殊对象,需要在回调函数中手动做hasOwnProperty检查, 否则会一直遍历到原型链上
callback Function

遍历时候每找到一个元素都需要执行的回调函数

this对象:

data本身,如果传递的是一个数组,那么this对象就是这个数组本身

参数:

类型 描述
Number,String

如果遍历的是一个字符串或者数组,该值就为当前元素的索引号

如果遍历的是一个对象,该值就为当前键的名称

Any

如果遍历的是一个字符串或者数组,该值就为当前的元素

如果遍历的是一个对象,该值就为当前键的键值

makeReturn Boolean

该参数决定了Std.each方法的返回值,当为true的时候,Std.each方法会根据回调函数中的返回值进行组合.

例如遍历的是一个字符串或者数组,回调函数中的返回值如果为非undefined的值,那么Std.each方法就会把该值放入一个数组中, 待遍历完毕之后作为Std.each的返回值返回.如果遍历的是一个对象,回调函数中的返回值为非undefined的值时,Std.each方法就会将当前返回值作为键值, 根据当前键名写入一个Object对象中,当Std.each执行完毕的时候,该Object就会作为返回值返回.

当该参数为false的时候,如果回调函数中的返回值为非undefined的值的时候,Std.each方法将会停止遍历,并且将该返回值作为Std.each的返回值返回.

split String 如果当遍历的值为字符串的时候,该字符串将会被分割成数组,而split参数决定了以哪种字符作为分割条件,split参数默认为空格,如果遍历的值不是字符串,那么该参数将会毫无意义.

返回值


自动

相关例子


遍历数组


/*
 * 遍历一个数组
 * 最终输出
 *  0,1
 *  1,2
 *  2,3
*/
Std.each([1,2,3],function(index,value){
    console.log(index + "," + value)
});
        

遍历字符串例子


//遍历一个字符串
Std.each("a b c",function(index,value){
    console.log(index + "," + value);
});

//第四个参数使用 "," 作为分割符遍历字符串
Std.each("a,b,c",function(index,value){
    console.log(index + "," + value);
},false,",");

//相当于
Std.each(["a","b","c"],function(index,value){
    console.log(index + "," + value);
});

/*
 *  最终输出
 *  0,"a"
 *  1,"b"
 *  2,"c"
*/
        

遍历object


var data = {
    a:1,
    b:2,
    c:3
}
//遍历一个object
Std.each(data,function(name,value){
    console.log(name + "," + value);
});
/*
 *  最终输出
 *  "a",1
 *  "b",2
 *  "c",3
*/
        

中止遍历过程并得到返回值


//遍历一个数组(当然:也可以是一个字符串,或object,用法都一样的)
var result = Std.each(["a","b","c"],function(index,value){
    if(index == 2){
        return value;
    }
});
/*
 * 在遍历数组时候,当index 等于 2(也就是遍历到值b)的时候,返回了这个value.
 * 因为return的不是undefined,所以遍历过程中止了.
 * 最终,Std.each的返回值result 的值是 "c"
*/

        

遍历一个数组,得到一个结果组合


//将第三个参数修改为true,就能得到一个结果组合
var result = Std.each([1,2,3],function(index,value){
    return index + ":" + value;
},true);
/*
 *  Std.each返回值result的值为 ["0:1","1:2","2:3"]
*/


//现在把return 去掉,看看会得到什么呢?
var result = Std.each([1,2,3],function(index,value){

},true);
/*
 *  result的值为 [] ,一个空数组
 *  如果没有return,就和return;是一样的,是一个undefined值,所以不会添加到结果组合里
*/
        

遍历一个object,得到一个结果组合


var data = {
    a:1,
    b:2,
    c:3
}
//将第三个参数修改为true,就能得到一个结果组合
var result = Std.each(data,function(index,value){
    return index + ":" + value;
},true);
/*
 *  Std.each返回值result的值为 {a:"a:1",b:"b:2",c:"c:2"}
*/


//现在把return 去掉,看看会得到什么呢?
var result = Std.each(data,function(index,value){

},true);
/*
 *  result的值为 {} ,一个空的Object
 *  如果没有return,就和return;是一样的,是一个undefined值,所以不会添加到结果组合里
*/