Array下的map filter reduce sort
2017-06-12 本文已影响0人
qingqing轶事
map()方法,返回一个由原数组中的每个元素调用一个指定方法后的返回值组成的新数组
filter(),用于把Array的某些元素过滤掉,然后返回剩下的元素。
把传入的函数依次作用于每个元素,然后根据返回值是true还是false决定保留还是丢弃该元素,结果为返回一个新数组。
reduce(),把一个函数作用在这个Array的[x1, x2, x3...]上,这个函数必须接收两个参数,reduce()把结果继续和序列的下一个元素做累积计算
sort()是高阶函数,是对原有数组的调试,会改变原有数组
1.map()
var arr = [1,2,3,4,5];
function getValue(x){
return x*x;
}
arr.map(getValue); //[1, 4, 9, 16, 25]
2.filter()-----------常用于筛选,
var arr = [1,2,3,4,5];
function getValue(x){
return x*x;
}
arr.filter(getValue); //[1,2,3,4,5]
会返回跟原数组相同的元素的原因在于,filter,会根据返回值是true还是false决定保留还是丢弃该元素
3.reduce
var arr = [1,2,3,4,5];
function getValue(x){
return x*x;
}
arr.reduce(getValue); //1
3.1 reduce累计计算
var arr = [1,2,3,4,5];
function getValue(x,y){
return x+y;
}
arr.reduce(getValue); //15
3.2 排序 **sort**
var arr = ['apple','1','2','food','ablel','wood'];
arr.sort((x,y) => {
if(x>y){
return 1;
}else if(x<y){
return -1;
}else{
return 0;
}
})
常见实例
- 只保留数组中的奇数或偶数 filter
var arr = [1,2,3,4,5,6,7,8,9,0];
arr.filter(function(x){
return x%2===0;
}) // [2, 4, 6, 8, 0]
- 去掉数组中的空字符串 filter
var arr = [1,2,null,' ',3,4,5,undefined];
console.log(arr.length); //8
var value = arr.filter(function(x){
return x && x.trim();
})
value; //[1,2,3,4,5]
- 去掉数组中重复元素 filter
var arr = [1,2,3,4,4,2,5,6,2];
var value = arr.filter(function(ele,index){
return arr.indexOf(ele) === index;
})
value; //[1,2,3,4,5,6]
- 复制数组 slice || concat
slice截取Array的部分元素,然后返回一个新的Array
var arr = [1,2,3,4,4,2,5,6,2];
var value = arr.slice(); //[1,2,3,4,4,2,5,6,2]
var value1 = arr.slice(1); //[2,3,4,4,2,5,6,2]
var value2 = arr.slice(0,3);//[1,2,3]
或者:
var arr = [1,2,3,4,4,2,5,6,2];
var value = arr.concat();
value; //[1,2,3,4,4,2,5,6,2]
把[1, 3, 5, 7, 9]变换成整数13579 reduce
var arr = [1, 3, 5, 7, 9];6
var value = arr.reduce(function(x,y){
return x*10+y;
})
value; //13579
- 请把用户输入的不规范的英文名字,变为首字母大写,其他小写的规范名字。输入:['adam', 'LISA', 'barT'],输出:['Adam', 'Lisa', 'Bart']。
// 首字母大写
// join 属于数组的方法 Array.join("-")
// split()将字符串转换成数组,string.split(",")
// stinrg.toUpperCase()
const arrcase = ['adam', 'LISA', 'barT'];
let arrnew = arrcase.map(x => {
let reset = x.toString();
let val = x.toString().split("")[0].toUpperCase();
return val+reset.substring(1,reset.length-1);
})
console.log(arrnew);