导读
本文介绍ECMAScript 5 语法新增的常用数组新方法
①:forEach
let Arr = [20, 50, 87, 99, 10];
let newarr = Arr.forEach((element, index) => {
element += 1;
console.log(element); //20,50,87,99,10
});
console.log(Arr); //[20,50,87,99,10]
console.log(newarr); //undefined
forEach的callback接收三个参数,分别是当前项、当前索引、原数组,没有返回值,且不能使用return、break跳出循环;
②:map
let Arr = [20, 50, 87, 99, 10];
let newarr = this.Arr.map(element => {
Arr.push(1);
return (element += 1);
});
console.log(Arr); //[20, 50, 87, 99, 10, 1, 1, 1, 1, 1, 1, 1, 1]
console.log(newarr); //[11, 21, 22, 31, 43, 56, 67, 76]
map可以返回一个新数组,且新增项不会进入本次循环,性能不如forEach;
③:filter
let Arr = [20, 50, 87, 99, 10];
let newarr = Arr.filter(element => {
return element > 50;
});
console.log(Arr); //[20, 50, 87, 99, 10]
console.log(newarr); //[87, 99]
filter返回符合判断条件的新数组,类似forEach + push组合,用到次数比较多;
④:every
let Arr = [20, 50, 87, 99, 10];
let IStrue = Arr.every(element => {
return typeof element === "number";
});
console.log(IStrue); //true
every返回布尔值,如果数组内所有项都满足判断条件 返回true,有一项不满足则返回false;
⑤:some
let Arr = [20, 50, 87, 99, 10];
let IStrue = Arr.some(element => {
return element > 50;
});
console.log(IStrue); //true
some返回布尔值,如果数组内所有项只要有一项满足判断条件 返回true,均不满足 则返回false;
⑥:indexOf
let Arr = [20, 50, 87, 99, 10];
console.log(Arr.indexOf(99)); //3
console.log(Arr.indexOf(100)); //-1
indexOf会检索数组中的某个元素值并返回其位置,若不存在则返回-1;