不用for就能循环/遍历?map() / apply() / forEach()

"We are champion"判断字符串中最长单词的长度

先上代码

/*
*/
var src="We are champion";
var arr=src.split(" ").map(function(even){retrun even.length});
console.log(Math.max.apply(this , arr))

然后才是废话

对象.map(callback(index,domElement))

对象可以是 数组,或者jq数组,毕竟map()是jq的遍历函数

返回也是jquery数组,因此需要直接调用并输出请

/*
*/
src.split(" ").map(function(even){return even.length}).get().join(',');

//输出结果
2,3,8

 

对象.apply(this arr)

这个我还没理解……

 

对象.forEach()

Firefox 和Chrome 的Array 类型都有forEach的函数。使用如下:

/*
*/
arryAll.forEach(function(e){  
    alert(e);  
})

但是IE不支持

因为IE的Array 没有这个方法

所以要做兼容函数

/*
*/
//Array.forEach implementation for IE support..  
//https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/forEach  
if (!Array.prototype.forEach) {  
    Array.prototype.forEach = function(callback, thisArg) {  
        var T, k;  
        if (this == null) {  
            throw new TypeError(" this is null or not defined");  
        }  
        var O = Object(this);  
        var len = O.length >>> 0; // Hack to convert O.length to a UInt32  
        if ({}.toString.call(callback) != "[object Function]") {  
            throw new TypeError(callback + " is not a function");  
        }  
        if (thisArg) {  
            T = thisArg;  
        }  
        k = 0;  
        while (k < len) {  
            var kValue;  
            if (k in O) {  
                kValue = O[k];  
                callback.call(T, kValue, k, O);  
            }  
            k++;  
        }  
    };  
}