数组常用的方法:
concat();//连接2个或更多数组,并返回结果
every();//对数组中的每一项运行给定函数,如果该函数对每一项都返回 true ,则返回 true
filter();//对数组中的每一项运行给定函数,返回该函数会返回 true 的项组成的数组
forEach();//对数组中的每一项运行给定函数。这个方法没有返回值
join();//将所有的数组元素连接成一个字符串
indexOf();//返回第一个与给定参数相等的数组元素的索引,没有找到则返回-1
lastIndexOf();//返回在数组中搜索到的与给定参数相等的元素的索引里最大的值(倒序)
map();//对数组中的每一项运行给定函数,返回每次函数调用的结果组成的数组
reverse();//颠倒数组中元素的顺序,原先第一个元素现在变成最后一个,同样原先的最后一个元素变成了现在的第一个
slice();//传入索引值,将数组里对应索引范围内的元素作为新数组返回
some();//对数组中的每一项运行给定函数,如果任一项返回 true ,则返回 true
sort();//按照字母顺序对数组排序,支持传入指定排序方法的函数作为参数
toString();//将数组作为字符串返回
valueOf();//和 toString 类似,将数组作为字符串返回
数组合并
// 数组合并
var zero = 0;
var positiveNumbers = [1,2,3];
var negativeNumbers = [-3,-2,-1];
var numbers = negativeNumbers.concat(zero, positiveNumbers);
//[-3,-2,-1,0,1,2,3]
迭代器函数
// 迭代器函数
function isEven (x) {
return (x % 2 == 0) ? true : false;
}
var numbers = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15];
numbers.every(isEven);// every 方法会迭代数组中的每个元素,直到返回 false 。 false
numbers.some(isEven);// some 方法会迭代数组的每个元素,直到函数返回 true 。 true
numbers.forEach(isEven);// 它和使用 for 循环的结果相同 没有返回值
numbers.map(isEven);// 以数组形式返回每个元素的运行结果 [false, true, false, true, false, true, false, true,false, true, false, true, false, true, false]
numbers.filter(isEven);// 以数组形式返回满足条件的元素 [2, 4, 6, 8, 10, 12, 14]
reduce();//累加器
原理:
[x1, x2, x3, x4].reduce(f) = f(f(f(x1, x2), x3), x4);
numbers.reduce(function(previous, current, index){
return previous + current;
});//120
eg:把用户输入的不规范的英文名字,变为首字母大写,其他小写的规范名字。输入:[‘adam’, ‘LISA’, ‘barT’],输出:[‘Adam’, ‘Lisa’, ‘Bart’]。
function normalize(arr){
if(!arr){
alert('the arr is empty!');
return;
}
return arr.map(function(s){
var temparr = [];
for(var j=0; j<s.length; j++){
var str = s.substr(j, 1);//取一个字符
if(j===0){
str = str.toUpperCase();// 大写
}else{
str = str.toLowerCase();// 小写
}
temparr.push(str);// 此时仍为一个数组
}
s = temparr.reduce(function(x, y){//数组改为字符串,也可以用 temparr.join("");
return x + y;
});
return temparr;
});
}