数组提供循环方法
1.forEach 循环
var arr = ["张三","李四","王五"];
arr.forEach(function(item,key,arr){
// item :键值 (arr[i])
// key : 键名 (i);
// arr 是原来的数组
console.log("键名:",key);
console.log("键值:",item);
})
2.map 循环 :循环数组的时候再复制一个数组出来
// 新的数组 = 数组.map(function(item,key,arr){});
var arr = ["张三","李四","王五"];
// 返还的新的数组和回调函数里的返还值有关系
var newarr = arr.map(function(item,key,arr){
// console.log(item,key,arr);
return item; //会被循环返还
})
console.log(newarr);//["张三","李四","王五"]
//让数组里所有的值都增加30%
var arr = [100,200,300,400,500];
var newarr = arr.map(function(item){
return item*1.3;
})
console.log(newarr);
3.filter : 过滤 循环 :在循环的过程中进行过滤
var arr = [1,2,3,4,5,6];
var res = arr.filter(function(item,key,arr){
// console.log(item,key,arr);
return item>4; //把所有大于3的值过滤出来返还给新的数组
})
console.log(res);
4.some 循环: 如果数组循环里返还的结果有一个true 那么返还结果就是true;(或)
var arr = [true,false,false,false];
var res = arr.some(function(item,key,arr){
return item; //循环返还item 只要item里有一个true
//那么最终返还结果就是true
})
console.log(res);//true
5.every 循环 :是循环函数里都返还true的时候 最终结果才是true,
只要有一个false ,那么最终结果就是false.
var arr = [4,5,6,4,1];
var res = arr.every(function(item,key){
// 数组里是不是所有的值都大于3;
return item>3;
})
console.log(res);
循环的拓展
// arr对象里有一个forEach方法
var arr = ["张三","李四","王五"];
arr.forEach(function(item,key,arr){
console.log(item,key,arr);
})
arr.forEach(function(){}); // 张三 0 (3) ["张三", "李四", "王五"]
李四 1 (3) ["张三", "李四", "王五"]
王五 2 (3) ["张三", "李四", "王五"]
//1.回调函数(callback): 如果把函数当成实参传入到另一个函数里执行
//那么这个函数就被称为回调函数.
function fn(a) {
// console.log(a); //ƒ () { console.log("fn...");}
a();
}
var arr = [1,2,3];
var obj = {name:"张三"};
var myfn = function () {
console.log("fn...");
}
fn(myfn);//fn...
//2.实现一个myforEach
var arr = ["张三","李四","王五"];
function myforEach(arr,fn) {
// arr 是数组
// fn是 传入的函数 function (item,key,arr) {}
// 循环数组
for(var i=0;i<arr.length;i++){
fn(arr[i],i,arr); //会被调用三次 ,回调函数调用传入实参
}
}
// 自己的forEach
myforEach(arr,function (item,key,arr) { //形参
console.log("传入的函数执行",item,key,arr);
})
//二、对象数组
var arr = [
{ name: "张三", score: 78 },
{ name: "张三", score: 59 },
{ name: "张三", score: 89 },
{ name: "张三", score: 30 }];
// 怎么筛选所有及格学员
var newarr = arr.filter(function (item) {
// console.log(item); //是每一个对象
return item.score>=60; // 获取每一个对象里的分数大于等于60分;
})
console.log(newarr); //筛选出所有及格的学员对象