javascript---数组(对象)遍历总结
有些事必须有返回结果的 return 如果没有return 的话 就会默认返回一个都是undefan的一个数组
一、forEache:
含义:遍历数组全部元素,
1.利用回调函数对数组进行操作(是因为不能return操作),
2.自动遍历数组.length次数,(同时在自动遍历的时候不能使用 break 、continue跳出循环,所以是不可控的),
3.并且不会生成新的数组。
格式:数组.forEache(函数)
函数中有三个参数:数组元素,数组下标,数组本身
案例:
var arr = [1,4,6,2,2,5,5,4];
var a = arr.forEach(function(item, index, arr){
console.log(item); //输出的是数组的元素
console.log(index); //输出的下标
console.log(arr); //输出的是数组
if(item == 6 ){
break; //foreach2.html:13 Uncaught SyntaxError: Illegal break statement break不存在;
continue; //foreach2.html:14 Uncaught SyntaxError: Illegal continue statement: no surrounding iteration statement continue不存在;
return 6;
}
})
console.log(a); //打印的是undefind ; 所以return 并不起什么作用。
什么是回调函数:
在JavaScript中函数也是对象的一种,
同样对象可以作为参数传递给函数,因此函数也可以作为参数传递给另外一个函数,这个作为参数的函数就是回调函数。
二、map:
map与forEach的异同:
相同:同样 map();也不可以使用break、continue 进行跳出循环。2.同样都是不可以改变元素组
不同:1.map()方法可以进行return操作。
格式:数组.map(函数)
函数中有三个参数:数组元素,数组下标,数组本身,
案例:1.把对象进行转换成数组,然后使用 map() 这个方法进行遍历。
var obj = {a: 3, b:4, c: 5};
Object.keys(obj); //这个是把对象转换成数组;
var arr = Object.key(obj); // 输出的是 arr= [a,b,c];
Object keys(obj).map(function(item, index, arr){
console.log(item) ; //输出的是: a,b,c 这个数组的对象
console.log(obj[item]); //输出的是 对象[属性] = 值;
})
2.使用map()方法进行遍历数组,并求和。
var arr = [1,4,6,9,2,5,10,4];
var sum = 0;
var ref = arr.map(function(item, index, arr){
console.log(item); //返回的是元素
console.log(index); // 返回的是数组中元素的下标
console.log(arr); // 返回的是 arr[] 数组
sum = sum + item;
return sum;
})
console.log(ref); // 输出的是 return 返回的sum值
3.只要能return 就能进行链式操作。
var arr = [1,4,6,9,2,5,10,4];
var red = arr.map(function(item, index, arr){
return item; // 把数组元素return 过去
}).map(function(item, index, arr){ // 首先获取到数组中的所有元素,然后在进行遍历,
return item * 2; //在遍历的过程中让数组中的元素进行循环遍历进行 * 2 操作。
})
console.log(red); //这个最终输出的是 在循环遍历中*2的操作。
三、filter:
含义: 过滤
理解: 遍历数组。根据return的条件进行返回一个新的数组。
1.return 返回一个新的数组。
2.同样不可以使用break,continue。进行结束操作。
格式: arr.filter(函数);
函数的三个参数 : 数组元素,数组下标 本身数组
var arr = [6,5,7,9,8,6,2,1,40];
var ref = arr.filter(function(item, index, arr){
if(item > 3){
return item;
}
})
console.log(ref); // 最终输出的结果是 数组对象大于3,如果不是大于3的则不返回给 ref
// 所以该操作是 过滤,并改变原数组。
四、some()
含义:遍历数组,找到满足return条件的第一个值,终止遍历, 通过 return true ; 来进行终止遍历,返回值是 true 或者是false.
2.同时也是不可以使用break ,continue 来终止函数。
格式: arr.some(函数); 函数包括三部分; 数组元素, 元素下标 , 本身数组
案例: var arr = [6,5,7,9,8,6,2,1,40];
var ref = arr.some(function(item,index,arr){
if(item == 2){
return true; // 则进行 终止遍历
}
})
console.log(ref);
五、every();
含义:遍历数组。找到任意一个(都同时满足条件,)不满足条件的都 使用return 进行终止遍历,终止遍历则返回false , 如果是全部满足的话,则return true 进行返回true。
同时也是不可以使用 break continue 进行跳转遍历;
格式: arr.every(函数); 函数中包括三部分 : 数组元素,元素下标,本身数组
var arr = [6,5,7,9,8,6,2,1,40];
var red = arr.evaey(function(item, index, arr){
if(item >3){
return false; // 来进行结束数组遍历
}})
console.log(red);
六、reduce() 含义: 重要
//可以进行查看数组中元素是否有重复的,如果有重复,那么数组元素重复几次
同样是不可以使用break, continue 来进行跳出循环。
格式:arr.reduce(参数1, 参数2);
参数1:与上面一样,遍历的function
function参数 ( pre(上一次return值),item, index, arr )
参数2:当参数1一开始没有值时的初始值
var arr = [1,4,6,2,2,5,5,4];
console.log(arr)
var test = arr.reduce(function(pre, item, index, arr) {
!pre[item]? pre[item] = 1: pre[item]++; // 如果为空则赋值为1, 如果不是空则进行加一。 上次没有返回值,如果没有则就等于1
return pre;
}, {});
console.log(test);
七、.for 循环也是遍历
八、.while
九、 do while
十、for(对象,in 数组) 含义:这个是对象遍历
var obj = {a: 5, b: 6, c: 7};
for( key in obj){
if( obj[key] == 6 ){
// break;
continue;
}
console.log(key);
console.log(obj[key]);
}
十一、solt :
含义:也是对数组进行遍历。 这个遍历是进行比较大小
情况:简单类型数组 ,引用类型复杂数组
情况1:简单类型数组
var arr3 = [8,9,15,65,8,59,2];

浙公网安备 33010602011771号