javascipt数组的作用(js中数组类型)
导语:javascript中几个很重要的数组方法
今天看了《学习javascript数据结构与算法》中,发现又扫了一些知识盲点。
以前我总以为every总会遍历数组中的所有元素,今天看了书以后才发现自己一直处于自我意淫的状态中。真是“玉不琢不成器,人不学不知道”。趁着现在有时间,记下来加深一下印象和理解:
every:对数组的每一项运行给定函数,如果该项函数对每一项都返回true,则返回true。
fileter:对数组的每一项运行给定函数,返回该函数会返回true的项组成的数组。
forEach:对数组的每一项运行给定函数。这个方法没有返回值。
map:对数组的每一项运行给定函数,返回每次函数调用的的结果组成的数组。
some:对数组的每一项运行给定函数,如果任意一项返回true,则返回true。
照着概念来解读:
1.every
"如果该项函数对每一项都返回true,则返回true"。
之前我以为不管函数最终的结果是返回false还是true,它都会遍历整个数组。其实这是个很大的误解!它一旦碰到返回false的项,就停止遍历了。如:
var arr=[1,2,"a",3,4];
arr.every(function(item){
console.log(item);
return number.isInteger(item);
});
//chrome控制台结果:
1,2,a,false
说明了数组只是遍历到了“a”就停止了。因为我们用一个number.isInteger来判断传入的项是不是整数,因为字符串"a"不满足要求。所以到a就停止了数组的遍历。
这里要注意的一点是,无论运行的函数的返回值是什么,最终都会被转成Boolean值。而只要是true就会遍历下一项,直到遍历完整个数组;只要碰到false,就会停止遍历。例如:
var arr1 = [1,2,"a",3,4];
arr1.every(function(item){
console.log(item);
return true;
});
//chrome控制台结果:
1,2,a,3,4,true
var arr2 = [1,2,"a",3,4];
arr2.every(function(item){
console.log(item);
return false;
});
//chrome控制台结果:
1,false
注意:如果运行的函数不写返回值,则默认返回undefined,也就是false。
some方法:方式跟every方法差不多,只不过跟every是相反的。只要是返回true。就停止遍历。
map方法:“返回每次函数调用的的结果组成的数组”。也就是说,会遍历整个数组,然后将每次运行的返回值组成一个数组作为map方法最终的返回结果。例如:
var arr2 = [1,2,"a",3,4];
arr2.map(function(item){
return item;
});
//chrome控制台结果:
[1,2,"a",3,4]
var arr2 = [1,2,"a",3,4];
arr2.map(function(item){
return true;
});
//chrome控制台结果:
[true,true,true,true]
var arr2 = [1,2,"a",3,4];
arr2.map(function(item){
});
//chrome控制台结果:
[undefined,undefined,undefined,undefined]
forEach方法会完全遍历整个数组,而且没有返回值,也不回被 break等关键字终止。
filter方法就是将满足返回true的每一项收集成一个数组,并最终返回:
var arr1 = [1,2,"a",3,4];
arr1.filter(function(item){
return Number.isInteger(item);
});
//chrome控制台结果:
[1,2,3,4]
var arr1 = [1,2,"a",3,4];
arr1.filter(function(item){
return true;
});
//chrome控制台结果:
[1,2,"a",3,4]
var arr1 = [1,2,"a",3,4];
arr1.filter(function(item){
return false
});
//chrome控制台结果:
[]
本文内容由小萱整理编辑!