javascript.basics
javascript.basics copied to clipboard
for循环,forEach,map,$.each(),some,fliter,every区别与联系。
ES5 新增的迭代方法some,fliter,every,map,forEach
map,fliter返回数组 forEach仅仅是简化for循环 some,every返回的是true/false
some
- some方法是有一个回调函数返回true,则返回true
var x = ([-1,2,3,4,5,6].some(function(value) {
if (value < 0) {
return true;
}
}));
console.log(x);// true
fliter
- 给定一个函数,把函数返回true的项组成一个新数组重新返回
var x = ([-1,2,3,4,5,6].fliter(function(value) {
if (value > 0) {
return true;
}
}));
console.log(x);// [2, 3, 4, 5, 6]
every
- every方法是每个回调函数都返回true,则返回true
var x = ([1,2,3,4,5,6].every(function(value) {
if (value > 0) {
return true;
}
}));
console.log(x);// true
forEach(arr)
给定一个函数,不需要返回值,只是将每一项遍历一般,不影响原数组
- 但是forEach循环会影响作用域(闭包环境)
var arr = [11,22,33];
// a:value, b:key, c:整个arr(this)
arr.forEach(function(a,b,c){
console.log(c)
})
map(arr)
给定一个函数,需要返回值,将其其返回值组成一个新的数组,不影响原数组
var arr = [11,22,33];
// a:value, b:key, c:整个arr(this)
var arr2 = arr.map(function(a,b,c){
return a + 1;
})
console.log(arr2)// [12, 23, 34]
所以forEach跟map的区别是 map功能更加强大,有一个返回值并构成一个新数组
for ... in(arr,obj)
最普通的遍历效果
var x = {a:2,c:3,d:{x:4,y:{z:123}}};
for (var i in x) {
console.log(x[i]);
}
- 会将外层的键值对都拿出来。
已更正
[].filter() 明显filter是对的。