map()方法,返回一個(gè)由原數(shù)組中的每個(gè)元素調(diào)用一個(gè)指定方法后的返回值組成的新數(shù)組
filter(),用于把Array的某些元素過(guò)濾掉,然后返回剩下的元素。
把傳入的函數(shù)依次作用于每個(gè)元素,然后根據(jù)返回值是true還是false決定保留還是丟棄該元素,結(jié)果為返回一個(gè)新數(shù)組。
reduce(),把一個(gè)函數(shù)作用在這個(gè)Array的[x1, x2, x3...]上,這個(gè)函數(shù)必須接收兩個(gè)參數(shù),reduce()把結(jié)果繼續(xù)和序列的下一個(gè)元素做累積計(jì)算
sort()是高階函數(shù),是對(duì)原有數(shù)組的調(diào)試,會(huì)改變?cè)袛?shù)組
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]
會(huì)返回跟原數(shù)組相同的元素的原因在于,filter,會(huì)根據(jù)返回值是true還是false決定保留還是丟棄該元素
3.reduce
var arr = [1,2,3,4,5];
function getValue(x){
return x*x;
}
arr.reduce(getValue); //1
3.1 reduce累計(jì)計(jì)算
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;
}
})
常見(jiàn)實(shí)例
- 只保留數(shù)組中的奇數(shù)或偶數(shù) 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]
- 去掉數(shù)組中的空字符串 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]
- 去掉數(shù)組中重復(fù)元素 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]
- 復(fù)制數(shù)組 slice || concat
slice截取Array的部分元素,然后返回一個(gè)新的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]變換成整數(shù)13579 reduce
var arr = [1, 3, 5, 7, 9];6
var value = arr.reduce(function(x,y){
return x*10+y;
})
value; //13579
- 請(qǐng)把用戶(hù)輸入的不規(guī)范的英文名字,變?yōu)槭鬃帜复髮?xiě),其他小寫(xiě)的規(guī)范名字。輸入:['adam', 'LISA', 'barT'],輸出:['Adam', 'Lisa', 'Bart']。
// 首字母大寫(xiě)
// join 屬于數(shù)組的方法 Array.join("-")
// split()將字符串轉(zhuǎn)換成數(shù)組,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);