1.forEach,some,map,filter遍历数组
/*
* 数组的forEach方法:
* 1、返回给回调的参数先是值,然后是下标
* 2、回调函数执行时内部的this指向window
* */
/*var arry = [1,2,3,4,5];
arry.forEach(function( val, index ) {
console.log( val, index, this );
});*/
(function (){
var sum = 0;
function getSum (item, index, array){
sum += item;
}
console.time("getSum");
for (var i = 0; i < 1000000; i++){
var sum = 0;
arr.forEach(getSum);
//arr.some(getSum)
//arr.map(getSum)
//arr.filter(getSum)
}
console.timeEnd("getSum"); // getSum: *****
console.log("使用forEach循环:sum=" + sum); // 使用forEach循环:sum=45
})()
2.for循环和while循环
var arr = [0,1,2,3,4,5,6,7,8,9];
(function() {
var sum = 0;
function getSum(array){
for (var i = 0; i < array.length; i++){
sum += parseInt(array[i]);
}
return sum;
}
console.time("getSum");
for (var i = 0; i < 1000000; i++){
sum = 0;
getSum(arr);
}
console.timeEnd("getSum"); // 7877.155ms
console.log("使用for循环:sum = " + sum); // 45
})();
// 求和:while循环遍历数组arr
(function () {
var sum = 0;
function getSum(array) {
var i = array.length;
while (i--) {
sum += parseInt(array[i]);
}
return sum;
}
console.time("getSum");
for (var i = 0; i < 1000000; i++) {
var sum = 0;
getSum(arr);
}
console.timeEnd("getSum"); // getSum: 7690.056ms
console.log("使用while循环:sum=" + sum); // 使用while循环:sum=45
})();
补充:把数组转换成字符串
var arryAll = [];
arryAll.push(1);
arryAll.push(2);
arryAll.push(3);
arryAll.push(4);
var v="";
arryAll.forEach(function(e){
v+=e+",";
})
v=v.substr(0,v.length-1)
console.log(v)//1,2,3,4*/
3.jQuery中的each方法
/*
* jQ实例的each方法
* 1、返回给回调的参数先是下标,然后是值
* 2、回调函数执行时内部的this就指向遍历到的每一个值(就是回调中接收到的val)
* 3、如果想中断遍历,在回调中返回false即可
* */
$('li').each( function( index, val ) {
console.log( index, val, this );
if( index === 1 ) {
return false;
}
});
/*
* jQ还提供了一个静态版本的each方法,供框架使用者使用
* 1、返回给回调的参数先是下标,然后是值
* 2、回调函数执行时内部的this就指向遍历到的每一个值(就是回调中接收到的val)
* 3、如果想中断遍历,在回调中返回false即可
* */
var obj = { name: 'test', val: {} };
var arr2 = [ 'abc', {}, 'qwer' ];
$.each( obj, function( key, val ) {
console.log( key, val, this );
} );
$.each( arr2, function( index, val ) {
console.log( index, val, this );
} );