<script>
// forEach方法最大的好处就是便于使用,而且不用定义额外的参数变量,
// 但是从效率及性能角度来说它是劣于原始for循环的,而且也不能强制return结束循环
var a=[1,2,3];
a.forEach(function(value,key,arr){
console.log(value) // 1,2,3
console.log(key) //0,1,2
console.log(arr) //三次结果都为[1,2,4] 该参数没有啥用
})
// return在foreach语句是没有效果的,map可以改变当前循环的值,
// 并且最终会返回一个新的被改变过值之后的数组,map一般用来处理需要修改某一个数组的值
var a=[1,2,3]
var b=a.map(function(vlaue,key,arr){
console.log(value) //1,2,3
console.log(key) //0,1,2
console.log(arr) //三次结果都为[1,2,3]
return value+1;
})
console.log(a); //结果为[1,2,3]
console.log(b); //结果为[2,3,4]
// filter和map不同,map目的 是为了改变值,而filter目的是为了去掉不要的值,在循环的时候
// 如果返回的是false那么就表示本次循环的不添加该值,返回true则相反表示要添加到新建的数组中
var a=[1,2,3]
var b=a.filter(function(value,key,arr){
console.log(value); //1,2,3
console.log(key); //0,1,2
console.log(arr) //三次结果都为[1,2,3]
if(vlaue===3){
return false
}
return true
})
console.log(a) //[1,2,3]
console.log(b) //[1,2]
// reduce的不同之处在于累加,和其它几个内置不同的地方,它的
// 第二个参数不是this对象,而是初始累加值(如果不设置的话数组会乱掉),
// 而且回调函数的个数也不同,比其他的多一个,而且还在开始多加一个参数,
// 第一个参数记录的是上一次循环的累加值
var a=[1,2,3]
var b=a.reduce(function(count,value,key,arry){
console.log(count); //0,1,3
console.log(value); //1,2,3
console.log(key) //0,1,2
console.log(arr) //[1,2,3]
return count+value;
},0);
console.log(a) //结果为[1,2,3]
console.log(b) //结果为6
// some的不同之处在于它返回的布尔值,他的作用有点像filter,
// 不过他的目的不是为了刷选返回数组,而是为了筛选该数组是否有满足你要的值,
// 而且找到符合条件的值返回一次true之后就不再继续执行了。
var a=[1,2,3]
var b=a.some(function(value,key,arry){
console.log(value); //1,2
console.log(key); //0,1
console.log(arr) //三次结果都为[1,2,3]
return value===2;
})
console.log(a) //结果为[1,2,3]
console.log(b) //结果为true
// some和every作用是一样的,只不过some当找到之后返回的是true,
// 而every找到之后返回的是false而已
var a=[1,2,3]
var b=a.every(function(value,key,arry){
console.log(value); //1,2
console.log(key); //0,1
console.log(arr) //三次结果都为[1,2,3]
return value===2;
})
console.log(a) //结果为[1,2,3]
console.log(b) //结果为false
// indexOf在数组循环过程中会和传入的参数比对,如果是比对成功,
// 那么终止循环,返回对比成功的下标
var a=[1,2,3]
var b=a.indexOf(2)
console.log(a) //[1,2,3]
console.log(b) //1
// lastIndexOf和indeOf作用一致,但查找方向不同,indexOF是正向查找,
// lastIndexOf是逆向查找,找到之后返回成功的下标
var a=[1,2,3,1]
var b=a.lastIndexOf(1)
console.log(a) //[1,2,3,1]
console.log(b) //1
//for.. in
var a=[1,2,3];
for(var key in a){
console.log(key); //0,1,2
}
var b={0:1,1:2,2:3}
for(var key in b){
console.log(key) // 0,1,2
}
</script>
</body>
</html>